2017-08-12 52 views
-1

我製作了一個宏,它在sheet2的行號發生更改時自動填充sheet1上的公式。VBA:如何在沒有按鈕的情況下自動觸發宏

當我在sheet2上有任何更新時,是否可以在沒有按鈕的情況下自動觸發它?

Sub Autofill() 
Dim sg As Sheets 
Dim Row As Long 
Dim fillRow As Integer 

Application.EnableEvents = False 
Row = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row 
fillRow = Row - 1 

Sheets("Sheet1").Select 
Range("A1:E1").Select 
Selection.Autofill Destination:=Range("A1:E" & fillRow), Type:=xlFillDefault 

Application.EnableEvents = True 

End Sub 
+0

https://stackoverflow.com/questions/409434/automatically-execute-an-excel-macro-on-a-cell-change –

+1

張貼問題,請:)這是一個之前一定要做足第一個鏈接谷歌時,我把Excel VBA宏事件 –

+0

我試過這個,但它不工作在這種情況下,因爲我通常更改sheet2中的單元格值我只是添加更多的行... :( – Kinghin245

回答

0

你可以嘗試創建一個子像以下:

將以下代碼粘貼。而改變: 1)「D4」與你的細胞要「監視」 2)在該行「做事情」

的問題是,你的代碼運行每次焦點更改爲另一個宏粘貼細胞。 但是,如果這足夠,您也可以使用Worksheet_BeforeDoubleclick。然後每次clicke一次兩次的代碼將運行

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Selection.Count = 1 Then 
    If Not Intersect(Target, Range("D4")) Is Nothing Then 
     'Do things 
    End If 
End If 

末次

enter image description here

+0

問題是我不會更改以前輸入的任何值,我只添加更多的行,所以監視單元格不適用於我:( – Kinghin245

+0

幸運的是,您可以監視更大的範圍。例如,您可以監控範圍(「D:D」)(整個D列)或甚至更大的區域,如範圍(「A:Z」)。 – Marco

-1

使用Worksheet.SelectionChange的事件。

在工作表中,VBA爲Sheet2中

補充:

私人小組Worksheet_SelectionChange(BYVAL目標作爲範圍) 呼叫自動填充() 完子

(這將被觸發,如果細胞發生變化,即使用戶不留行,所以檢查參數目標。)

0

在碎石底部的工作表標籤上單擊鼠標右鍵,單擊「視圖 代碼」,然後在那裏插入此下面的代碼。如果列A是不是正在被 改變在片材上

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim Row As Long 
Dim fillRow As Integer 

這下一行將退出代碼。如果您希望在工作表的任何單元格上發生任何更改,都會觸發代碼 ,請將其刪除。

if InRange(Target,Worksheets("Sheet2").range("A:A") = false then exit sub 
Row = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row 
fillRow = Row - 1 

Sheets("Sheet1").Select 
Range("A1:E1").Select 
Selection.Autofill Destination:=Range("A1:E" & fillRow), Type:=xlFillDefault 

End Sub 

Function InRange(Range1 As Range, Range2 As Range) As Boolean 
InRange = Not (Application.Intersect(Range1, Range2) Is Nothing) 
End Function 
相關問題