Когда наступает новый год, создается новый рабочий лист, а также таблица на этом новом рабочем листе. Я создал макрос для создания таблицы. Простая функция (как отдельный модуль) возвращает текущий год, поэтому новый лист получает свое имя, и я хотел назвать таблицу в этом новом листе с текущим годом, но он не работает должным образом. Когда я проверю имя таблицы после ее создания, это как _
2016.Excel VBA: использование переменной в качестве имени таблицы
После создания таблицы макрос называет столбцы с моими именами, но он сбой с первым столбцом с ошибкой method range of object _global failed
.
Я не уверен, как правильно передать результат моей функции, чтобы назвать таблицу, и использовать ее для ссылки на таблицу в макросе, чтобы изменить имена столбцов. Когда макрос был записан вместо:
Range("Data.GetYear[[#Headers],[Kolumna1]]").Select
был:
Range("Table1[[#Headers],[Kolumna1]]").Select
, и она работала так, в основном, вопрос заключается в том, чтобы заменить Table1
с переменной, так что я мог бы легко сослаться на стол, как там не может быть несколькими таблицами с тем же именем в книге.
Function GetYear() As String
GetYear = Format(Date, "yyyy")
End Function
Создание таблицы:
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$8:$F$8"), , xlYes).Name = Data.GetYear
Range("Data.GetYear[[#Headers],[Kolumna1]]").Select
ActiveCell.FormulaR1C1 = "Lp."
Range("Data.GetYear[[#Headers],[Kolumna2]]").Select
ActiveCell.FormulaR1C1 = "Data przychodu"
Range("Data.GetYear[[#Headers],[Kolumna3]]").Select
ActiveCell.FormulaR1C1 = "Kwota przychodu"
Range("Data.GetYear[[#Headers],[Kolumna4]]").Select
ActiveCell.FormulaR1C1 = "Podatek"
Range("Data.GetYear[[#Headers],[Kolumna5]]").Select
ActiveCell.FormulaR1C1 = "Dochód"
Range("Data.GetYear[#All]").Select
Selection.Columns.AutoFit
Range("Data.GetYear[[#Headers],[Lp.]]").Select
Selection.AutoFilter
Но все же, как я должен ссылаться на имя таблицы в этом макросе, который я записал, для изменения имен столбцов, поэтому я не получу ошибку 'method range of object _global failed'? – kkris77
Ну, я не думаю, что это важно, поскольку таблица создана и получает имя. Конечно, в исходном макросе была таблица1 вместо Data.GetYear, но я предполагал, что такое изменение не имеет значения, поскольку функция возвращает строку. Даже использование Year (Date) не помогает при обращении к таблице. – kkris77