VLad777 Пользователь Сообщений: 5018 |
Добрый день. |
VLad777 Пользователь Сообщений: 5018 |
Модераторы прошу прощения. У меня васкакивала ошибка после которой я не проверяя создавал тему — поэтому похоже их так много получилось. Удалите пожалуйста две предыдущее. Эту оставьте. |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Как-то так: Я сам — дурнее всякого примера! … |
VLad777 Пользователь Сообщений: 5018 |
#4 02.10.2012 11:39:05 Спасибо. Тема закрыта. |
Как создать лист, если его нет в книге?
Предположим, у вас есть книга, содержащая несколько листов, теперь вам нужно определить, существует ли конкретное имя рабочего листа. Если имя рабочего листа не существует, создайте его. Если он существует, сообщите, что он существует. Как бы вы могли решить эту задачу в Excel?
Создайте лист, если его нет в книге с кодом VBA
Создайте лист, если его нет в книге с кодом VBA
Следующий код VBA может помочь вам проверить конкретное имя рабочего листа, если оно существует в книге, в противном случае код может создать лист по мере необходимости.
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: создайте лист, если его нет в книге:
Sub TestSheetCreate()
'Updateby Extendoffice
Dim newSheetName As String
Dim checkSheetName As String
newSheetName = Application.InputBox("Input Sheet Name:", "Kutools for Excel", _
"sheet4", , , , , 2)
On Error Resume Next
checkSheetName = Worksheets(newSheetName).Name
If checkSheetName = "" Then
Worksheets.Add.Name = newSheetName
MsgBox "The sheet named ''" & newSheetName & _
"'' does not exist in this workbook but it has been created now.", _
vbInformation, "Kutools for Excel"
Else
MsgBox "The sheet named ''" & newSheetName & _
"''exist in this workbook.", vbInformation, "Kutools for Excel"
End If
End Sub
3, Затем нажмите F5 нажмите клавишу для запуска этого кода, появится диалоговое окно с напоминанием о вводе имени листа, которое вы хотите проверить, см. снимок экрана:
4. Затем нажмите OK Кнопка:
(1.) Если лист существует, появится всплывающее окно с напоминанием, как показано на следующем снимке экрана:
(2.) Если лист не существует, он будет создан сразу, см. Снимок экрана:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (0)
Оценок пока нет. Оцените первым!
Создание, копирование, перемещение и удаление рабочих листов Excel с помощью кода VBA. Методы Sheets.Add, Worksheet.Copy, Worksheet.Move и Worksheet.Delete.
Создание новых листов
Создание новых рабочих листов осуществляется с помощью метода Sheets.Add.
Синтаксис метода Sheets.Add
expression.Add [Before, After, Count, Type]
где expression — переменная, представляющая собой объект Sheet.
Компоненты метода Sheets.Add
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлен новый.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлен новый.
- Count — необязательный параметр типа данных Variant, указывающий, сколько листов будет добавлено (по умолчанию — 1).
- Type — необязательный параметр типа данных Variant, указывающий тип листа: xlWorksheet** (рабочий лист) или xlChart (диаграмма), по умолчанию — xlWorksheet.
*Если Before и After не указаны, новый лист, по умолчанию, будет добавлен перед активным листом.
**Для создания рабочего листа (xlWorksheet) можно использовать метод Worksheets.Add, который для создания диаграмм уже не подойдет.
Примеры создания листов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
‘Создание рабочего листа: Sheets.Add Worksheets.Add ThisWorkbook.Sheets.Add After:=ActiveSheet, Count:=2 Workbooks(«Книга1.xlsm»).Sheets.Add After:=Лист1 Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(1) Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(«Лист1») ‘Создание нового листа с заданным именем: Workbooks(«Книга1.xlsm»).Sheets.Add.Name = «Мой новый лист» ‘Создание диаграммы: Sheets.Add Type:=xlChart ‘Добавление нового листа перед ‘последним листом рабочей книги Sheets.Add Before:=Sheets(Sheets.Count) ‘Добавление нового листа в конец Sheets.Add After:=Sheets(Sheets.Count) |
- Лист1 в After:=Лист1 — это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
- Лист1 в After:=Worksheets(«Лист1») — это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.
Создаваемый лист можно присвоить объектной переменной:
Dim myList As Object ‘В активной книге Set myList = Worksheets.Add ‘В книге «Книга1.xlsm» Set myList = Workbooks(«Книга1.xlsm»).Worksheets.Add ‘Работаем с переменной myList.Name = «Listok1» myList.Cells(1, 1) = myList.Name ‘Очищаем переменную Set myList = Nothing |
Если создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.
Копирование листов
Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.
Синтаксис метода Worksheet.Copy
expression.Copy [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Copy
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.
*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.
Примеры копирования листов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
‘В пределах активной книги ‘(уникальные имена листов) Лист1.Copy After:=Лист2 ‘В пределах активной книги ‘(имена листов на ярлычках) Worksheets(«Лист1»).Copy Before:=Worksheets(«Лист2») ‘Вставить копию в конец Лист1.Copy After:=Sheets(Sheets.Count) ‘Из одной книги в другую Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Copy _ After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1») ‘Один лист активной книги в новую книгу Лист1.Copy ‘Несколько листов активной книги в новую книгу* Sheets(Array(«Лист1», «Лист2», «Лист3»)).Copy ‘Все листы книги с кодом в новую книгу ThisWorkbook.Worksheets.Copy |
* Если при копировании в новую книгу нескольких листов хотя бы один лист содержит умную таблицу — копирование невозможно. Один лист, содержащий умную таблицу, копируется в новую книгу без проблем.
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листов
Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.
Синтаксис метода Worksheet.Move
expression.Move [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Move
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.
*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.
Примеры перемещения листов
Простые примеры перемещения листов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
‘В пределах активной книги ‘(уникальные имена листов) Лист1.Move After:=Лист2 ‘В пределах активной книги ‘(имена листов на ярлычках) Worksheets(«Лист1»).Move Before:=Worksheets(«Лист2») ‘Размещение после последнего листа: Лист1.Move After:=Sheets(Sheets.Count) ‘Из одной книги в другую Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Move _ After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1») ‘В новую книгу Лист1.Move |
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:
Sub Peremeshcheniye() Dim x x = InputBox(«Введите имя или номер листа», «Перемещение листа «Лист4»») If IsNumeric(x) Then x = CLng(x) Sheets(«Лист4»).Move Before:=Sheets(x) End Sub |
Удаление листов
Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete
Синтаксис метода Worksheet.Delete
expression.Delete
где expression — переменная, представляющая собой объект Worksheet.
Примеры удаления листов
‘По уникальному имени Лист1.Delete ‘По имени на ярлычке Worksheets(«Лист1»).Delete ‘По индексу листа Worksheets(1).Delete ‘В другой книге Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Delete |
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.
Содержание
- Создание или замена листа
- Определение наличия листа
- Создание листа
- Замена листа
- Об участнике
- Поддержка и обратная связь
- Удалить лист, если он существует, и создать новый
- Безопасное удаление листа
- Удалить & Заменить лист
- О ThisWorkbook :
- How to Write a VBA Code to Create a New Sheet in Excel (Macro)
- Sheets.Add Method
- Write a VBA Code to ADD a New Sheet in a Workbook
- Different Ways to Add New Sheets in a Workbook using a VBA Code
- 1. Add a Single Sheet
- 2. Add Multiple Sheets
- 3. Add a Sheet with a Name
- 4. Add a Sheet with a Name from a Cell
- 5. Add a Sheet After/Before a Specific Sheet
- 6. Add a New Sheet at Beginning
- 7. Add a New Sheet at the End (After the Last Sheet)
- 8. Add Multiple Sheets and use Names from a Range
Создание или замена листа
В следующих примерах показано, как определить, существует ли лист, а затем создать или заменить его.
Пример кода предоставил: Том Уртис, Atlas Programming Management
Определение наличия листа
В этом примере показано, как определить, существует ли лист с именем Sheet4 с помощью свойства Name объекта Worksheet . Имя листа задается переменной mySheetName .
Создание листа
В этом примере показано, как определить, существует ли лист с именем Sheet4. Имя листа задается переменной mySheetName . Если лист не существует, в этом примере показано, как создать лист с именем Sheet4 с помощью метода Add объекта Worksheets .
Замена листа
В этом примере показано, как определить, существует ли лист с именем Sheet4. Имя листа задается переменной mySheetName . Если лист существует, в этом примере показано, как удалить существующий лист с помощью метода Delete объекта Worksheet , а затем создать новый лист с именем Sheet4.
Важно При удалении листа удаляются все данные на исходном листе с именем Sheet4.
Об участнике
Том Уртис, MVP — основатель компании Atlas Programming Management, создающей полноценные бизнес-решения для Microsoft Office и Excel в Кремниевой долине. Том обладает больше чем 25 годами опыта управления бизнесом и разработки приложений для Microsoft Office, а также является соавтором книги «Holy Macro! It’s 2,500 Excel VBA Examples».
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Удалить лист, если он существует, и создать новый
Я хочу просмотреть листы Excel, найти лист с определенным именем и удалить этот лист, если он найден. После этого я хочу создать лист после всех существующих листов с таким именем. Мой код выглядит следующим образом:
Однако это не делает оба эти действия за один прогон кода. Если лист уже существует, он просто удалит лист и не создаст новый, как я хочу. Мне нужно запустить его снова, чтобы создать новый.
Как мне исправить мой код, чтобы удалить старый лист, если он существует, и создать новый?
Удалите оператор End , ваш код прекращает работу после поиска и удаления листа asdf .
Вместо прохождения Worksheets вы можете проверить наличие элемента в коллекции, попробовав и получив его:
Однако самый простой способ – попытаться удалить лист, когда он обернут в “блок” On Error Resume Next – On Error GoTo 0 :
Я не согласен с тем, что “самый простой” подход заключается в намеренном генерировании (и подавлении) ошибки. Лично я бы выбрал метод loop-to-locate, только пытаясь удалить его, если объект существует.
Если вы все равно собираетесь заново создавать рабочий лист, это подойдет практически во всех случаях:
Безопасное удаление листа
Если однострочник (выше) не работает для вас (возможно, из-за некоторых упрямых цветов фона/изображений), то здесь подпункт, который вы можете вызвать, чтобы удалить любой указанный лист:
Назовите это просто как:
… где asdf – это имя листа (вкладки), который нужно удалить.
Удалить & Заменить лист
Кроме того, вызов подпункта ниже приведет к удалению и замене листа, присвоив ему то же имя и поместив его в ту же позицию вкладки, что и оригинал:
О ThisWorkbook :
Я использовал ThisWorkbook в обеих подпрограммах, что важно при работе с VBA, которая изменяет другие книги, или когда у вас открыто несколько книг одновременно.
Использование ThisWorkbook гарантирует, что ваш код всегда ссылается на книгу, в которой находится код, который его вызвал.
Без этого, например, если у вас открыты два одинаковых файла, и вы смотрите один, ожидая запуска VBA в другой книге, если в книге, которая “сверху”, есть лист с именем тот VBA, который пытается удалить, удалит лист в текущей (активной) книге вместо намеченной.
(… и вы не можете Ctrl + Z отменить VBA!)
Источник
How to Write a VBA Code to Create a New Sheet in Excel (Macro)
Once you start learning VBA one of the coolest things you can do is to write a VBA code to insert new a worksheet in a workbook.
Well, there is already a shortcut key to insert a new worksheet or you can also use the normal option but the benefit of using a VBA code is you can add multiple worksheets with a single click and you can also define that where you want to add it.
For this, you need to use the Sheets.Add method, and in this post, we will be learning how to use it to add one or more worksheets in a workbook.
Sheets.Add Method
- Before: To add a new sheet before a sheet.
- After: To add the new sheet before a sheet.
- Count: Number of sheets to add.
- Type: Type of the sheet you want to add (LINK)
Write a VBA Code to ADD a New Sheet in a Workbook
Open the visual basic editor and follow these steps.
- First, you need to enter Sheets.Add method.
- Then you need to define the place to add the new sheet (Before or After).
- Next thing is to enter the count of worksheets.
- In the end, the type of sheet.
Different Ways to Add New Sheets in a Workbook using a VBA Code
Below you have different ways to add a new sheet to a workbook:
1. Add a Single Sheet
To add a single sheet, you can use the below code, where you didn’t specify any argument.
This code tells Excel to add a sheet in the active workbook, but as you don’t have any argument it will use the default values and add one worksheet(xlWorksheet) before the active sheet.
Here’s one more way to write this, check out the below code.
As you are already in the active workbook you can use the below code as well. It does the same thing.
2. Add Multiple Sheets
To add multiple sheets in one go, you just need to define the COUNT argument with the number of sheets you want to add.
Now the count of the sheets that you have defined is 5, so when you run this code it instantly adds the five new sheets in the workbook.
3. Add a Sheet with a Name
If you want to rename the sheet after adding it, you can use the following code:
In the above code, we have used the name object (LINK) which helps you to specify the name of a sheet.
4. Add a Sheet with a Name from a Cell
You can also take the value to use as the sheet’s name from a cell.
In the above code, cell A1 is used to get the name for the new sheet.
5. Add a Sheet After/Before a Specific Sheet
As these arguments are already there in the Sheets.Add where you can specify the sheet to add a new sheet before or after it.
Now in the above code, you have two lines of code that you have used before and after an argument in the Sheet.Add method. So, when you run this code it adds two sheets one is before and one is after the “mySheet”.
6. Add a New Sheet at Beginning
By using the before argument using you can also add a sheet at the beginning of the sheets that you have in the workbook.
So basically, what we are going to do is we’re going to specify the sheet number instead of the sheet name.
In the above code, you have used sheet number (1) that tells VBA to add the sheet before the sheet which is in the first position in all the worksheets. In this way, it will always add the new sheet at the beginning.
7. Add a New Sheet at the End (After the Last Sheet)
To add a new sheet in the end you need to write the code in a different way. So, for this, you need to know how many sheets there in the workbook are so that you can add a new sheet at the end.
In the above code, Sheet.Count returns the count of the sheets that you have in the workbook, and as you have defined the after argument it adds the new sheet after the last sheet in the workbook.
8. Add Multiple Sheets and use Names from a Range
The following code counts rows from the range A1:A7. After that, it loops to add sheets according to the count from the range and uses values from the range to name the sheet while adding it.
But with the above code, there could be a chance that the sheet name you want to add already exists or you have a blank cell in the name range.
In that case, you need to write a code that can verify if the sheet with the same name already exists or not and whether the cell from where you want to take the sheet name is blank or not.
If both conditions are fulfilled only then it should add a new sheet. Let me put it in steps two steps:
First, you need to write an Excel User Defined Function to check if a sheet with the same name already exists or not.
Second, you need to write a code using this function and that code should also check if the name cell is blank or not.
Now in the above code, you have used the VBA IF Statement and in this statement, you have the sheet check function which checks for the sheet name and then you have a condition to check if the name cell has a blank value.
Источник
lizarybka 0 / 0 / 0 Регистрация: 15.12.2015 Сообщений: 22 |
||||
1 |
||||
Создание листа первым. если он отсутствует29.02.2016, 15:43. Показов 3205. Ответов 3 Метки нет (Все метки)
Необходимо, что, если отсутствует лист с именем «Содержание», то такой лист создается и вставляется первым. Так же на листе должны создаться гиперссылки на другие листы в этой же книге.
Лист создается и гиперссылки на другие листы тоже работают, но создается он в конце, как написать, чтобы он создавался первым?
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
29.02.2016, 15:43 |
Ответы с готовыми решениями: Макрос на создание листа и перенос данных с предыдущего листа Если в текст входит каждая из букв слова «work», то напечатать «содержит», если нет — «отсутствует». Ввести с клавиатуры фамилию и задать букву на поиск (любую) тогда вывести ее на экран если он есть, а если нет то сообщение что она отсутствует. Если запись в столбце существует, то ничего не делать, если запись отсутствует, то записать нужное значение. Как реализовать? 3 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
29.02.2016, 16:00 |
2 |
|||
lizarybka,
0 |
0 / 0 / 0 Регистрация: 15.12.2015 Сообщений: 22 |
|
29.02.2016, 16:24 [ТС] |
3 |
Да, я так делала, но тогда появляется проблема, что он видит только один лист. Всего 3 листа. 1 лист — содержание, и есть еще вторые 2. Все листы передаются в комбобокс, кроме листа содержание. Я пишу такой же код, содержание вставляется первым, его нет в комбобоксе, но нет и еще одного листа
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
29.02.2016, 16:49 |
4 |
|||
Сообщение было отмечено lizarybka как решение Решение
тогда появляется проблема, что он видит только один лист Кто «он»? Значит, надо научить его видеть листы, какие нужно.
0 |