Нужна помощь с этой строки кода:Excel VBA автозаполнения назначения
.Range("A1:G1").AutoFill Destination:=.Range("A1:U1")
Я пытаюсь автоматизировать сделать календарь. Код не будет компилироваться, если я изменю диапазон до любого значения, кроме A1:U1
. Я хотел бы расширить диапазон до A1:AE1
По какой причине он застрял и не компилируется?
Спасибо!
Sub CreateCalendar()
Dim lMonth As Long
Dim strMonth As String
Dim rStart As Range
Dim strAddress As String
Dim rCell As Range
Dim lDays As Long
Dim dDate As Date
'Add new sheet and format
ActiveWindow.DisplayGridlines = True
With Cells
.ColumnWidth = 6#
.Font.Size = 8
End With
'Create the Month headings
For lMonth = 1 To 12
Select Case lMonth
Case 1
strMonth = "January"
Set rStart = Range("A1")
Case 2
strMonth = "February"
Set rStart = Range("A3")
Case 3
strMonth = "March"
Set rStart = Range("A5")
Case 4
strMonth = "April"
Set rStart = Range("A7")
Case 5
strMonth = "May"
Set rStart = Range("A9")
Case 6
strMonth = "June"
Set rStart = Range("A11")
Case 7
strMonth = "July"
Set rStart = Range("A13")
Case 8
strMonth = "August"
Set rStart = Range("A15")
Case 9
strMonth = "September"
Set rStart = Range("A17")
Case 10
strMonth = "October"
Set rStart = Range("A19")
Case 11
strMonth = "November"
Set rStart = Range("A21")
Case 12
strMonth = "December"
Set rStart = Range("A23")
End Select
'Merge, AutoFill and align months
With rStart
.Value = strMonth
.HorizontalAlignment = xlCenter
.Interior.ColorIndex = 6
.Font.Bold = True
With .Range("A1:G1")
.Merge
.BorderAround LineStyle:=xlContinuous
End With
**.Range("A1:G1").AutoFill Destination:=.Range("A1:U1")**
End With
Next lMonth
'Pass ranges for months
For lMonth = 1 To 12
strAddress = Choose(lMonth, "A2:AE2", "A4:AE4", "A6:AE6", _
"A8:AE8", "A10:AE10", "A12:AE12", _
"A14:AE14", "A16:AE16", "A18:AE18", _
"A20:AE20", "A22:AE22", "A24:AE24")
lDays = 0
Range(strAddress).BorderAround LineStyle:=xlContinuous
'Add dates to month range and format
For Each rCell In Range(strAddress)
lDays = lDays + 1
dDate = DateSerial(Year(Date), lMonth, lDays)
If Month(dDate) = lMonth Then ' It's a valid date
With rCell
.Value = dDate
.NumberFormat = "ddd dd"
End With
End If
Next rCell
Next lMonth
'add con formatting
With Range("A1:AE28")
.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=TODAY()"
.FormatConditions(1).Font.ColorIndex = 2
.FormatConditions(1).Interior.ColorIndex = 1
End With
End Sub
Что реальное сообщение об ошибке, что вы получите? – Michael
Причина, по которой он не работает, заключается в том, что AE не подходит для объединенных диапазонов ячеек при попытке автозаполнения, он будет работать, если вы выберете AB или AI .. AE - это столбец 31, вы объединили 7 ячеек, 31 не разделили на 7 (По крайней мере, не целые числа). Выберите ячейку, которая делится на 7, и вы хорошо пойдете. –
. Я все еще получаю ошибку 1004. Я не могу четко объяснить, я хочу, чтобы между 28-31 столбцами, объединенными (max), был своего рода разделитель между датами. – Collin