セル A1 から B1 に値をコピーして表示するには、Excel の数式が必要です。セル A1 の値が正の値からゼロに変更された場合、セル B1 の値は変更されず、以前の値 (常にゼロより大きい値) が保持される必要があります。値は数値です。
答え1
これは数式だけでは実現できません。しかし、次のVBAコードでは、選択変更イベント、 それは動作します:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Const SourceCell = "$A$1"
Const TargetCell = "$A$2"
If Target.Address = SourceCell Then
If Range(SourceCell).Value > 0 Then
Range(TargetCell).Value = Range(SourceCell).Value
End If
End If
End Sub
または、ソース セルとターゲット セルをさらに追加したい場合 (後で要求されます):
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim SourceCells(), TargetCells() As Variant
Dim i As Integer
' Make sure the cells are declared with $'s
' Make sure that the arrays contain the same number of elements
SourceCells = Array("$B$1", "$B$2", "$F$5")
TargetCells = Array("$A$1", "$A$2", "$H$12")
For i = 0 To UBound(SourceCells)
If Target.Address = SourceCells(i) Then
If Range(SourceCells(i)).Value > 0 Then
Range(TargetCells(i)).Value = Range(SourceCells(i)).Value
End If
End If
Next i
End Sub
このコードをVBAコード内に挿入します。ワークシートこれを実行したい場所を指定します。これを行うには、次の手順に従ってください。
- Excel でワークブックを開き、
ALT
+ をクリックしますF11
。これにより、VBA エディターが開きます。 - 左側の「プロジェクト」ツリーを確認し、Excel ワークブックとワークシートを見つけます。そのワークシートを右クリックし (マウスで)、選択します
View Code
。 - 上記のコードをコピーしてエディターに貼り付けます。
- VBA エディターを閉じると、すべてが期待どおりに動作するはずです。