|
▼nobu さん:
>回答ありがとうございます。
>>こんな感じでいかがでしょう。
>>Private Sub Worksheet_Change(ByVal Target As Range)
>> Dim x As String
>>
>> x = Range("A65536").End(xlUp).Row
>> With Target
>> If IsEmpty(.Value) Then Exit Sub
>> If .Count > 1 Then Exit Sub
>> If .Column = 2 Or .Column = 5 Or .Column = 8 Then
>> Application.EnableEvents = False
>> For i = 1 To x
>> If Cells(i, 2).Value <> "" And Cells(i, 5).Value <> "" _
>> And Cells(i, 8).Value <> "" Then
>> Cells(i, 3).Value = Round(Cells(i, 1) - Cells(i, 2), 2)
>> Cells(i, 6).Value = Round(Cells(i, 4) * Cells(i, 5), 2)
>> Cells(i, 9).Value = Round(Cells(i, 7) / Cells(i, 8), 2)
>> End If
>> Next
>> Application.EnableEvents = True
>> End If
>> End With
>>End Sub
H列入力後全て計算されるのですが
B列入力時C列計算答え E列入力時F列計算答え・・・・・
ということができますか?
よろしくお願いします。
> A B C D E F G H I
>500 200 300 150 100 15000 500 100 5
>300 100 200 120 50 6000 300 125 2.4
追伸ですが
下記のように修正してみたのですが
仮に1行目計算終了していてC1の300を一度消去した場合
2行目の100を入れると1行目の数値も再計算されまた300という
答えが返ってしまいます。これを行毎に計算させることは出来ないでしょうか
また、たとえば1行目の200をdeleteした場合300も消したいと思っているのですが
以下右項も同様です。いかがでしょうか。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As String
x = Range("A65536").End(xlUp).Row
With Target
If IsEmpty(.Value) Then Exit Sub
If .Count > 1 Then Exit Sub
If .Column = 2 Or .Column = 5 Or .Column = 8 Then
Application.EnableEvents = False
For i = 1 To x
If Cells(i, 2).Value <> "" Then
Cells(i, 3).Value = Round(Cells(i, 1) - Cells(i, 2), 2)
If Cells(i, 5).Value <> "" Then
Cells(i, 6).Value = Round(Cells(i, 4) * Cells(i, 5), 2)
If Cells(i, 8).Value <> "" Then
Cells(i, 9).Value = Round(Cells(i, 7) / Cells(i, 8), 2)
End If
Application.EnableEvents = True
End If
End If
Next
End If
End With
End Sub
|
|