0

いくつかの値を計算しましたが、2つの結果があるはずです。これらの結果を2つの異なるセルに表示したいと思います。

A1またはA2の値を変更すると、Excelが停止します。とにかく値を表示できますか?

Sheet1 
Private Sub Worksheet_Change(ByVal Target As Range)
   Call DisplayResult 
End Sub

Module1 
Sub DisplayResult() 
     Range("A3").Value = Range("A1").Select.Value + Range("A2").Select.Value     
     Range("B3").Value = Range("B1").Select.Value + Range("B2").Select.Value 
End Sub
4

1 に答える 1

0

ここでは.selectを使用する必要はありません-

ワークシートコード:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Sheet1.Range("A1:B2"), Target) Is Nothing Then
    MsgBox "Hello"
End If

End Sub

モジュールコード:

Sub DisplayResult()

Sheet1.Range("A3").Value = Sheet1.Range("A1").Value + Sheet1.Range("A2").Value
Sheet1.Range("B3").Value = Sheet1.Range("B1").Value + Sheet1.Range("B2").Value

End Sub

トリガーする範囲を制限せずにWorksheet_Changeサブルーチンに行を配置するCall DisplayResultと、無限ループに陥ります(DisplayResultがWorksheet_Changeサブルーチンをトリガーします)。DisplayResultコードはいつトリガーする必要がありますか?範囲A1:B2を変更した場合のみ?

于 2013-01-17T13:30:02.167 に答える