Создать файл с листами по названию месяцев

Автор Посетитель 27.11.2023, 10 декабря 2023, 20:28

Посетитель 27.11.2023

Здравствуйте ! Хотел сделать совершенно элементарную вещь, но выдает ошибку при компиляции.
Что нужно: сделать файл данных, состоящий из 12ти листов, каждый из которых по порядку будет называться по месяцам. А потом внутри каждого листа заполнить определенные ячейки. Именно на этом моменте и выдает ошибку. Наверное, дело в неправильном синтаксисе.
Вот мой нерабочий фрагмент:

Sub CreateDataFile()
  Dim i, j, g, h As Integer, MonthOfYear As Sheets
 
  If Dir(MyDataFileName) = "" Then
     Set DataFile = Workbooks.Add
     CurrentDate = "01.01." + CStr(CurYear)
     For g = 1 To 12
       Set MonthOfYear = DataFile.Worksheets(g)
       MonthOfYear.Add(After:=Sheets(g)).Name = MonthName(g)
       MonthOfYear.Range("A1") = "Год"
       MonthOfYear.Range("B1") = CurYear
       MonthOfYear.Range("B2") = MonthName(g)
       For i = 0 To 367
         MonthOfYear.Cells(3 + i, 1) = CDate(CurrentDate) + i
       Next
       For j = 2 To LastCol
         MonthOfYear.Cells(2, j + h) = PrimaryData.Worksheets(j).Name
         MonthOfYear.Cells(2, 2 * j - 1) = "Месяц оплаты"
         h = h + 1
       Next
       MonthOfYear.Columns.AutoFit
     Next
     DataFile.SaveAs (MyDataFileName)
     DataFile.Close
  End If
  Set DataFile = Workbooks.Open(MyDataFileName)
End Sub

Администратор

Вы переменной назначали неправильный тип данных. Вы назначали "Sheets", а надо "Worksheet":
MonthOfYear As Worksheet

Sheets - это множественное число и переводится "листы". Вы же будете помещать в переменную один лист. Поэтому соответственно нужен тип данных в единственном числе.

Администратор

Здесь тип данных Integer будет только у последней переменной, у остальных переменных будет тип данных Variant.
В VBA для каждой переменной нужно указывать тип данных, иначе будет использоваться тип данных Variant.
Dim i, j, g, h As Integer

Посетитель 27.11.2023

Пока не выходит.. См. вложение..
По переменным: то есть через запятую однотипные переменные перечислять не нужно ? У h будет тип Integer, а у остальных Variant ?

[ФАЙЛЫ ВАШИ ПОЛУЧЕНЫ - НЕТ НЕОБХОДИМОСТИ ВЫКЛАДЫВАТЬ ИХ ПОВТОРНО]

Администратор

У объекта Worksheet нет метода Add.
Метод Add есть у объекта Workbook.


Цитата:
По переменным: то есть через запятую однотипные переменные перечислять не нужно ?

Через запятую можно перечислять. Это разрешено в VBA.

Цитата:
У h будет тип Integer, а у остальных Variant ?

Да.