2016-09-07 25 views
1

當我按下按鈕時,我想運行一系列宏來自動填充工作表。當單獨運行宏時運行正常,但在按按鈕之後不會被調用

第一個被調用的宏將自動填充列到該表中特定列的範圍,它運行得非常好。其餘的表應填充到第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

http://stackoverflow.com/documentation/excel-vba/1576/common-mistakes/5110/qualifying-references#t=201609072319376212028可能出於興趣。 – pnuts

回答

2

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 
+0

謝謝@Comintern這樣做! –

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 
+0

非常感謝@Tim Williams我不知道如何解釋範圍。 –

相關問題