单独运行时宏运行正常,但按钮一个接一个地调用时运行不正常

时间:2016-09-07 23:15:31

标签: excel vba excel-vba macros

当我按下按钮时,我有一系列要运行到自动填充工作表的宏。

第一个调用的宏将自动填充列到该表中特定列的范围,它运行得非常好。其余的工作表应填充到第100行,第2行中的任何内容都应该填充。

当逐个运行时运行良好但是当我按下按钮一起运行它们时,所有宏都只应用于Sheet1。而不是我指定的床单。

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

Private Sub CommandButton1_Click()    
Fill_It_Down1
Fill_It_Down2
Fill_It_Down3
End Sub

这些是我写过的宏。

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

2 个答案:

答案 0 :(得分:2)

您需要确保使用工作表对象验证所有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

答案 1 :(得分:2)

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

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