当单独运行macros时运行正常,但当button被一个接一个地调用时,macros运行正常

当我按下一个button时,我想运行一系列macros来自动填充表格。

第一个被调用的macros将自动填充列到该表中特定列的范围,它运行得非常好。 其余的表格应填入第100行,无论是在他们的排2。

当运行一个接一个的时候,运行的很好,但是当我按下button来运行它们时,所有的macros都只应用于Sheet1。 而不是我指定的床单。

另外,如果所有这些都是DownFilled而不是自动填充,会更好,因为当我自动填充它们时,数字会发生变化,我需要它们重复而不是增量。

Private Sub CommandButton1_Click() Fill_It_Down1 Fill_It_Down2 Fill_It_Down3 End Sub 

这些是我写的macros。

 Sub Fill_It_Down1() Dim source As Worksheet Set source = Sheets("Sheet1") Range("D2:ZZ2").AutoFill destination:=Range("D2:ZZ" & Range("B" & Rows.Count).End(xlUp).Row) End Sub Sub Fill_It_Down2() Dim source As Worksheet Set source = Sheets("Sheet2") Range("C2:ZZ2").AutoFill destination:=Range("C2:ZZ2" & 100) End Sub Sub Fill_It_Down3() Dim source As Worksheet Set source = Sheets("Sheet3") Range("A2:ZZ2").AutoFill destination:=Range("A2:ZZ2" & 100) End Sub 

Range是工作表的属性,所以如果您的代码位于工作表模块中,则需要显式引用目标工作表:

 Sub Fill_It_Down1() Dim source As Worksheet Set source = Sheets("Sheet1") With source .Range("D2:ZZ2").AutoFill Destination:=.Range("D2:ZZ" & .Range("B" & .Rows.Count).End(xlUp).Row) End With End Sub Sub Fill_It_Down2() Dim source As Worksheet Set source = Sheets("Sheet2") source.Range("C2:ZZ2").AutoFill Destination:=source.Range("C2:ZZ2" & 100) End Sub Sub Fill_It_Down3() Dim source As Worksheet Set source = Sheets("Sheet3") source.Range("A2:ZZ2").AutoFill Destination:=source.Range("A2:ZZ2" & 100) End Sub 

您需要确保您使用工作表对象来限定所有Range调用:

 Sub Fill_It_Down1() With Sheets("Sheet1") .Range("D2:ZZ2").AutoFill destination:= _ .Range("D2:ZZ" & .Range("B" & .Rows.Count).End(xlUp).Row) End with End Sub