Здравствуйте ! Хотел сделать совершенно элементарную вещь, но выдает ошибку при компиляции.
Что нужно: сделать файл данных, состоящий из 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
Пока не выходит.. См. вложение..
По переменным: то есть через запятую однотипные переменные перечислять не нужно ? У h будет тип Integer, а у остальных Variant ?
[ФАЙЛЫ ВАШИ ПОЛУЧЕНЫ - НЕТ НЕОБХОДИМОСТИ ВЫКЛАДЫВАТЬ ИХ ПОВТОРНО]
У объекта Worksheet нет метода Add.
Метод Add есть у объекта Workbook.
Цитата:
По переменным: то есть через запятую однотипные переменные перечислять не нужно ?
Через запятую можно перечислять. Это разрешено в VBA.
Цитата:
У h будет тип Integer, а у остальных Variant ?
Да.