Я хотел бы создать новые рабочие листы, назовите новые листы, добавить столбцы в рабочие листы и затем составить таблицу в каждой новой таблице, все в книге, которая имеет один лист для начала , Мой код не работает, но чтобы увидеть, где я с этим до сих пор:Создайте новый лист и создайте таблицу в пределах
Sub Create_Sheets()
Sheets.Add.Name = "VA_NAME"
Sheets.Add.Name = "VA_VALUE"
Sheets.Add.Name = "CE_NAME"
Sheets.Add.Name = "CE_VALUE"
Dim Table As ListObject
Set Table = Sheet1.ListObjects("VA_NAME")
Table.ListColumns.Add 1
Table.HeaderRowRange(1) = "SOURCE_SEQ_NBR"
Table.ListColumns.Add 2
Table.HeaderRowRange(2) = "L1_PARCEL_NBR"
Table.ListColumns.Add 3
Table.HeaderRowRange(3) = "L1_ATTR_TEMP_NAME"
Table.ListColumns.Add 4
Table.HeaderRowRange(4) = "L1_ATTR_NAME"
Table.ListColumns.Add 5
Table.HeaderRowRange(5) = "L1_ATTR_VALUE"
Set Table = Sheet1.ListObjects("VA_VALUE")
Table.ListColumns.Add 1
Table.HeaderRowRange(1) = "SOURCE_SEQ_NBR"
Table.ListColumns.Add 2
Table.HeaderRowRange(2) = "L1_PARCEL_NBR"
Table.ListColumns.Add 3
Table.HeaderRowRange(3) = "L1_ATTR_TEMP_NAME"
Table.ListColumns.Add 4
Table.HeaderRowRange(4) = "L1_ATTR_NAME"
Table.ListColumns.Add 5
Table.HeaderRowRange(5) = "L1_ATTR_VALUE"
Set Table = Sheet1.ListObjects("CE_NAME")
Table.ListColumns.Add 1
Table.HeaderRowRange(1) = "SOURCE_SEQ_NBR"
Table.ListColumns.Add 2
Table.HeaderRowRange(2) = "L1_PARCEL_NBR"
Table.ListColumns.Add 3
Table.HeaderRowRange(3) = "L1_ATTR_TEMP_NAME"
Table.ListColumns.Add 4
Table.HeaderRowRange(4) = "L1_ATTR_NAME"
Table.ListColumns.Add 5
Table.HeaderRowRange(5) = "L1_ATTR_VALUE"
Set Table = Sheet1.ListObjects("CE_VALUE")
Table.ListColumns.Add 1
Table.HeaderRowRange(1) = "SOURCE_SEQ_NBR"
Table.ListColumns.Add 2
Table.HeaderRowRange(2) = "L1_PARCEL_NBR"
Table.ListColumns.Add 3
Table.HeaderRowRange(3) = "L1_ATTR_TEMP_NAME"
Table.ListColumns.Add 4
Table.HeaderRowRange(4) = "L1_ATTR_NAME"
Table.ListColumns.Add 5
Table.HeaderRowRange(5) = "L1_ATTR_VALUE"
Columns.AutoFit
Я предпочел бы, что код распознает имя листа (то есть, «VA_NAME»), а не на «Лист2, Лист3» и так далее. Я знаю, что «Set Table = Sheet1.ListObjects (« VA_NAME »)» - это, скорее всего, моя проблема, так как это зависит от соглашения «Sheet (X)», но делает «Таблицы» («VA_NAME»). ListObjects не работает. Есть ли быстрое решение этого, или это то, что я прошу против правил VBA?
Спасибо, все!
UPDATE: Мне пришло в голову, что мой опубликованный код предполагает, что таблицы уже существуют, и это не тот случай. Я добавил новый код для создания реальных таблиц, но без имени колонка:
Sheet2.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlNo).Name = "VA_NAME"
Sheet3.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlNo).Name = "VA_VALUE"
Sheet4.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlNo).Name = "CE_NAME"
Sheet5.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlNo).Name = "CE_VALUE"
Моего порядок операций должен быть Создание именованных Sheets -> Создание именованных столбцов -> Создание таблиц из столбцов.
Благодарим за предложение! Ваш заданный код создает столбцы и таблицу для «CE_VALUE», но не идет дальше, ссылаясь на «Диапазон рабочих таблиц для данных таблицы должен быть на том же листе, что и создаваемая таблица». Это потому, что активный рабочий лист не изменяется в коде? – MattCoats
Исправлен код. См. Мое редактирование. Не забудьте принять ответ, если он работает. – Chrismas007
Это делает меньше, чем до последнего исправления. Когда я пробую это на чистом листе и заменим «НАЗВАНИЕ ВАШЕГО ЛИСТА С ДАННЫМИ» и «Имя исходного листа», он все равно останавливается после «CE_VALUE». Я должен был заметить, что содержание существующего листа не имеет к этому никакого отношения, и единственное значение, которое имеет этот лист, - это использование имени Sheet1. – MattCoats