- ベストアンサー
再×5質問:エクセルでマクロを使ってイコールで同じものを表示できますがどっち入力してもどちらにも反映する事は出来ますか?
http://okwave.jp/qa2600765.html の質問の件です。 違うシートに3つ以上同じ物を反映するのは どうしたらいいのでしょうか? 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
merlionXXです。 やはり、セルの数が多くなる場合はIf文よりはSelectCase構文の方が簡単ですね。修正します。ついでにコメント(’以下)も入れておきますからわかりやすいと思います。コメントがあってもこのままコピペで大丈夫ですよ。 Sheet1のシートのモジュールに以下をコピペし、Sheet2のシートモジュールには Sheets("Sheet2").Range(Target.Address) = Target.Valueを"Sheet1"と直したものを貼り付けて見てください。 Private Sub Worksheet_Change(ByVal Target As Range) '値が変わった(チェンジイベント)場合に作動する Select Case Target.Address(False, False) '選択したセルのアドレスで分岐 On Error GoTo line '万一以下でエラー発生の場合Line:以下に飛ぶ Case "A1", "B1", "C1", "D1" 'A1かB1かC1かD1の場合 Application.EnableEvents = False '値が変わってもイベントを起こさない Sheets("Sheet2").Range(Target.Address) = Target.Value 'シート2の同一セルに値を入れる Case Else 'それ以外の場合 Exit Sub 'マクロを終了 End Select '分岐終了 line: Application.EnableEvents = True 'イベントを通常に戻す End Sub
その他の回答 (1)
- merlionXX
- ベストアンサー率48% (1930/4007)
ご質問は 例えば、Sheet1のA1やB1やC1やD1に入力した値が、自動的にSheet2の同じセルに表示され、Sheet2のA1やB1やC1やD1に入力した値が、自動的にSheet1の同じセルに表示されるということでいいですか? それなら Sheet1のシートのモジュールに以下をコピペし、Sheet2のシートモジュールに以下のコードの下から4行目のSheets("Sheet2").Range(c_name) = Target.Valueを"Sheet1"と直したものを貼り付けて見てください。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" _ And Target.Address <> "$B$1" _ And Target.Address <> "$C$1" _ And Target.Address <> "$D$1" Then Exit Sub c_name = Target.Address On Error GoTo line Application.EnableEvents = False Sheets("Sheet2").Range(c_name) = Target.Value line: Application.EnableEvents = True End Sub でも、benitier59さん、いったいどのようなものを作ろうとお考えなのでしょうか?
補足
毎度毎度本当に有難うございます。 今会社で色々と商品を管理するものを作らないといけないのですが 社内には詳しい者がおらず専用のソフトを買うお金も無いといった感じです^^; ですからエクセルで出来るだけ効率よく管理できるようにしたいです@ 知識が全然無く早く作らないといけないので大変です><