プロが教えるわが家の防犯対策術!

先ほど、testシートのD列(D2以下)に値が入力されるとC列に計算式A列*B列が入っておりその答えが入力されます。
同時に、D列に値を入力するとC列に入力される値をその下の行のB列に自動反映させたいのです。

例D2=10.5  C2=10(A2)*5(B2) B3=C2の答えの50

の質問をさせていただきまして、以下の回答をいただいたのですが、すいません。
C2の値が変更になった場合に自動でB3の数字も変更したいのですが、今のままだとD2を入力しなおしてEnter押さないと変わってくれません。
もう一度教えてくださいませ。
宜しくお願いいたします。


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Row > 1 Then
If .Value <> "" Then
.Offset(1, -2) = .Offset(, -1)
Else
.Offset(1, -2).ClearContents
End If
End If
End With
End Sub

A 回答 (2件)

こんばんは!



C列には数式が入っているのですよね?
結局A・B・D列のデータ変更があればマクロが実行されれば良い!という解釈です。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A,B:B,D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
Application.EnableEvents = False
If .Column = 4 Then
.Offset(1, -2) = .Offset(, -1)
ElseIf .Value <> "" Then
Cells(.Row + 1, "B") = Cells(.Row, "C")
End If
Application.EnableEvents = True
End With
End Sub

としたらどうなりますか?m(_ _)m
    • good
    • 0
この回答へのお礼

こんばんは!!!
早速ご回答いただきましてありがとうございました!

なるほど!!そういう風に考えれば良いのですね!
ありがとうございます。
おかげ様で出来ました!
何度も申し訳ございません。ありがとうございました。

お礼日時:2017/08/18 22:13

どうやら、質問の意味を取り違えていたようですが、その例題から、そういうコードには解釈はできませんでしたね。

D列の入力と、C列との直接の関係はないように思います。

>例D2=10.5  C2=10(A2)*5(B2) B3=C2の答えの50
D2 は、文字でも何でもよいということのようですが。

ここの質問に提示されたコードの

 .Offset(1, -2) = .Offset(, -1)

以下のように変えれば済むのではありませんか?
ふたたび、勘違いしているかもしれませんが。

  .Offset(1, -2).Formula = "=R[-1]C[1]"

まあ、既存のものは、書き換えないといけませんが、まあ、どちらでもよい話かもしれませんが。
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ございませんでした。
私の説明不足で勘違いさせてしましましてすいません・・・。

参考になりました!ありがとうございました。

お礼日時:2017/08/22 09:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A