2017-08-12 15 views
-1

sheet2の行番号が変更されるたびに、sheet1の式を自動入力するマクロを作成しました。VBA:ボタンなしでマクロを自動的にトリガーする方法

シート2を更新してもボタンなしで自動的にトリガーすることはできますか?

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

だった:)してください質問を投稿する前にあなたの研究を行いますgoogleの最初のリンクは、私はExcelのVBAマクロイベントを入れます –

+0

私はこれを試しましたが、私は通常、シート2のセルの値を変更するので、この場合は動作しません、私はちょうどそれに多くの行を追加する... :( – Kinghin245

答えて

0

あなたは次のようにサブを作成しようとすることができます:

は、次のコードを貼り付けます。変更して:あなたは 2を「監視」したいあなたの細胞と 1)「D4」)は、「物事を行う」行でマクロを貼り付け

問題がある、あなたのコードが毎回実行されるフォーカスが別のものに変更されました細胞。 これで十分であれば、Worksheet_BeforeDoubleclickを使用することもできます。そして、あなたは二回、コードをclickeたびにWorksheet.SelectionChange-イベントを使用

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 

End Subの

enter image description here

+0

問題は、以前の入力の値を変更しないことです。行をさらに追加するだけで、セルを監視することができません。( – Kinghin245

+0

大きな範囲を監視できます。たとえば、Range( "D:D")(列全体D)またはRange( "A:Z")などのより大きな領域を監視することができます。 – Marco

-1

を実行します。 Sheet2のためのワークシート-VBAで

追加:

ます。Private Sub Worksheet_SelectionChange(ByValの対象を範囲) コールオートフィル() End Subの

をセルが変更された場合(これがあっても、トリガされますユーザーが行を残して、そのパラメータのターゲットをチェックしません。)

0

がれの下部にあるシートタブを右クリックし、そこでは、この次のコードを挿入し「ビュー コード」をクリックしてください。

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim Row As Long 
Dim fillRow As Integer 

列Aは シートで変更されているものでない場合、この次の行は、コードを終了します。シートの任意のセルに変更を加えてコードをトリガーする場合は、 を削除します。

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 
関連する問題