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

お世話になります。
シートモジュールに下記のようなマクロを設定し値が反映できるようにしておりますが、他のセルの値も指定したシートのセルに反映させたいのですが、どういったコードを記述すれば良いでしょうか。
例:C7を装置仕様のF16、G7を装置仕様のK6に反映など30個ぐらい反映できるようにしたいと考えております。
注:必ずしもコードで指定しているセルに値が記入されるわけではないです。
下記コードのセル番地を変えたものをコードの下に新たに記述してみたのですが、やはり間違っているようです。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$5" Then
With Worksheets("装置仕様")
If Target <> "" Then
.Range("F14") = Target
End If
End With
End If
End Sub

A 回答 (2件)

No.1です。


たびたびごめんなさい。

おそらく最初の質問が「対象セルが空白でない場合」という条件があったと思います。
すなわち、元データを消去した場合、「装置仕様」Sheetのセルは何も変化させない!
というコトだと思いますので、↓のコードに変更してください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("装置仕様")
Set wS3 = Worksheets("Sheet3")
If Target.Count > 1 Or Target = "" Then Exit Sub '//←この行を訂正 ★
Set c = wS3.Range("A:A").Find(what:=Target.Address(False, False), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
wS2.Range(c.Offset(, 1)) = Target
End If
End Sub

これでどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

tom04様

いつもありがとうございます。
思った通りのことができました!
とても助かりました。
今後も見かけたら助けて頂ければ幸いですm(_ _)m

お礼日時:2015/04/13 00:10

こんばんは!



>・・・反映など30個ぐらい反映できるようにしたいと・・・

対応するセルに規則性がないようなので、一つ一つ範囲をしても
やたらにコードが長くなるだけですので、一案です。
↓の画像のように全く関係のないSheet(今回はSheet3としています)に対応するセル番地を羅列しておいてはどうでしょうか?

画像では入力するSheetのセル番地がA列でそれに対応する「装置仕様」Sheetのセル番地をB列に入れておきます。
その下準備ができた上での一例です。
シートモジュールです。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("装置仕様")
Set wS3 = Worksheets("Sheet3")
If Target.Count > 1 Then Exit Sub
Set c = wS3.Range("A:A").Find(what:=Target.Address(False, False), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
wS2.Range(c.Offset(, 1)) = Target
End If
End Sub

こんなんではどうでしょうか?m(_ _)m
「エクセルのマクロについて」の回答画像1
    • good
    • 0

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