在 Excel VBA 中对一系列单元格使用自动填充

Posted

技术标签:

【中文标题】在 Excel VBA 中对一系列单元格使用自动填充【英文标题】:Using AutoFill in Excel VBA for a range of cells 【发布时间】:2015-05-26 12:03:34 【问题描述】:

我正在尝试编写一个代码,它将在 Excel 电子表格中找到最后一行,并使用最后两行包含的相同公式自动填充另外 24 行(就像您手动执行自动填充一样)。 A 列包含一小时的日期和时间,如下所示:

26/5/15 00:00
26/5/15 01:00 
and so on...

B-G 列包含根据 A 列相应单元格中的时间应用的公式

这是我想出的代码:

Sub FillDay()
Dim Initial_cell, Var_1, Final_End_Row As Long, Update_range, Range_To_Fill As String
Dim col, n, b As Integer, rng As Range
col = 1
If Application.WorksheetFunction.CountA(Columns(col)) = 0 Then
MsgBox "You have selected a blank column"
n = 0
Else
Set rng = Intersect(Columns(col), ActiveSheet.UsedRange)
On Error Resume Next
b = rng.Cells.SpecialCells(xlCellTypeBlanks).Count
n = rng.Cells.Count - b
On Error GoTo 0
n = n + 1
End If
'n returns the number of the last occupied cell
Initial_cell = n
Var_1 = Initial_cell - 2
Update_range = "A" & Var_1 & ":" & "G" & Initial_cell
Final_End_Row = Initial_cell + 24
Range_To_Fill = "A" & Initial_cell & ":" & "G" & Final_End_Row
Range(Update_range).AutoFill Destination:=Range(Range_To_Fill), Type:=xlFillDefault
End Sub

出现运行时错误“1004”应用程序定义或对象定义错误... 使用调试问题似乎在最后一行

VBA 新手,欢迎任何帮助!

谢谢

【问题讨论】:

你在哪一行有错误? 好像是最后一行 【参考方案1】:

将代码的最后一位更改为

Initial_cell = n - 1
Var_1 = Initial_cell - 2
Update_range = "A" & Var_1 & ":" & "G" & Initial_cell
Final_End_Row = Initial_cell + 24
Range_To_Fill = "A" & Var_1 & ":" & "G" & Final_End_Row
Range(Update_range).AutoFill Destination:=Range(Range_To_Fill), Type:=xlFillDefault

2 个问题:- 1 您在 Initial_cell 中包含了一个空白行(这可能是故意的?)。 2 自动填充目标需要从 update_range 的同一行开始

要考虑的另一件事可能是,如果 var_1=initial_setup -2 为负数,以后可能会导致错误

【讨论】:

非常感谢,问题出在目的地,正如您所说,Update_range 和 Range_To_Fill 需要从同一行开始。但是,无法弄清楚 Initial_cell 中空白行的来源。你能解释一下这一刻吗?初始单元格总是大于2,所以不会出现Var_1为负值的问题。 如果您进入第一个 if 语句:- n 设置为 0,那么 Initial_cell 将设置为 0,您将在 Var_1 中有 -2。您可能希望将最后 6 行代码移到 if 语句的“else”部分下

以上是关于在 Excel VBA 中对一系列单元格使用自动填充的主要内容,如果未能解决你的问题,请参考以下文章

自动填充中断一条记录 [Excel-VBA]

使用 VBA 在 Excel 中处理合并和居中单元格

excel怎么对一列进行求和

excel中怎样用vba使单元格在特定条件下才可以编辑?

vba日历控件只能在一个单元格用怎么办

Excel vba 仅自动填充空单元格