2017-12-29 6 views
1

関数を使用しているセルから値をコピーして別のセルから値をコピーする際に問題があります。値をA1、A3 = A1に挿入し、A3の値が変わると、変更は自動的に列Hに転送される必要があります。問題は、A1に値を入力するとA3が更新されますが、値は転送されません私がA3に値を入力すると、H列が更新されます。Excel VBA ByValターゲットとして範囲関数セルから移行するときに対象ワークシートを更新しません。

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = Range("A3").Address Then 

    ' Get the last row on our destination sheet (using Sheet2, col A here)... 
    Dim intLastRow As Long 
    intLastRow = Sheet1.Cells(Sheet2.Rows.Count, "H").End(xlUp).Row 

    ' Add our value to the next row... 
    Sheet1.Cells(intLastRow + 1, "H") = Target.Value 

End If 

End Sub 

画像Screenshot of sheet

は、私はまた、次のコードを試してみました参照してください。

Private Sub Worksheet_Change(ByVal Target As Range) 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Private Sub Worksheet_Change(ByVal Target As Range) 

上記のいずれも変更イベントの引き金を引くものではありません。私はA3値の変更に由来する値の変更に対して値A1を使用できません。私はトリガーA3にマクロをコピー&ペーストすることを考えていました。しかし、実際には値変更コードがうまくいくと思いますが、変更値をA3から取り出すことができます。前もって感謝します。

答えて

0

Worksheet_Changeセルが式を再計算するときに発生しません。セルのValueが割り当てられると起動します。

A1に値を割り当てる場合は、ハンドラ内でRange("A1").Addressが必要です。

複数のイベントがありますが、個々のセルではなくシート全体で計算が完了すると起動します。

+0

こんにちはGSergです。 A1はウェブを介して引き出されるデータである。たとえ私がA1でそれを実行したとしても、それはイベントをトリガーしません。 –

+0

マクロでプルされていると、手動でイベントを無効にしない限り、イベントがトリガーされます。 Webクエリで取得された場合は、クエリテーブルのRefreshイベントを処理する必要があります。 – GSerg

0

Changeの処理中にイベントを無効にすることをお試しください。コードがループしている可能性があります。 this linkを参照してください

Private Sub Worksheet_Change(ByVal Target As Range) 

Application.EnableEvents = False 

If Target.Address = Range("A3").Address Then 

    ' Get the last row on our destination sheet (using Sheet2, col A here)... 
    Dim intLastRow As Long 
    intLastRow = Sheet1.Cells(Sheet2.Rows.Count, "H").End(xlUp).Row 

    ' Add our value to the next row... 
    Sheet1.Cells(intLastRow + 1, "H") = Target.Value 

End If 

Application.EnableEvents = True 

End Sub 
0

次のスクリプトは、シート上の計算はより多くの情報のため、終了するたびに実行され、それがその後、A3の値とColunm Hを更新します。

正確に何が役立つのかわかりませんが、正しい経路であなたを得ることができるかどうかはわかりません。また、新しいA3の値が最後のColumn Hの値と同じであるかどうかを確認するためのチェックインを作成して、値の挿入をバイパスすることもできます。

Private Sub Worksheet_calculate() 

    ' Get the last row on our destination sheet (using Sheet2, col A here)... 
    Dim intLastRow As Long 
    intLastRow = Sheet1.Cells(Sheet2.Rows.Count, "H").End(xlUp).Row 

    ' Add our value to the next row... 
    Sheet1.Cells(intLastRow + 1, "H") = Sheet1.Range("A3").Value 

End Sub 
関連する問題