- ベストアンサー
入力したセル番地をメッセージボックスで表示する方法
Excelでメッセージボックスの使い方についてお聞きします。 下記のコードを実行します。その時、メッセージボックス上に入力したセル番地(A1)、「こんにちは」という語句をそれぞれ表示させるにはどのような方法があるのでしょうか。 宜しくお願いします。 Range("A1").Value = "こんにちは"
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Range("A1").Value = "こんにちは" この実行結果を確認する意味でしたらば、 シートモジュールにて_Changeイベントを用います。 以下、シートモジュール。 Private Sub Worksheet_Change(ByVal Target As Range) ' 8331714 If Target.Count > 1 Then Exit Sub If Target.Row > 30 Then Exit Sub If Target.Column > 20 Then Exit Sub If Target.Value = "" Then Exit Sub MsgBox "アドレスは " & Target.Address(0, 0) & _ vbLf & "値 は " & Target.Value End Sub イベントプロシージャのポイントは、条件分岐で、 不要な処理を予め回避するように書くことです。 例では、 If Target.Count > 1 Then Exit Sub 複数セルを纏めて値変更した場合は、 (以下同様)この行で処理を抜けて終了します。 If Target.Row > 30 Then Exit Sub 値を変更したセルが39行めよりしただった4なら、 If Target.Column > 20 Then Exit Sub 値を変更したセルが39行めよりしただった4なら、 If Target.Value = "" Then Exit Sub 値を変を消去した場合は、 といった具合に、必要に応じて処理を分けるように そして事前にエラーを回避するように書く のが基本ではあります。 ただし、 Range("A1").Value = "こんにちは" と書いた時点で、この実行プロシージャの内では、 2つの値が解っているのですから、 わざわざ、イベントプロシージャに依存する必要はないような? 例えば変数を使って a = "A1" v = "こんにちは" Range(a).Value = v MsgBox "アドレスは " & a & _ vbLf & "値 は " & v のようにする方が確実ではあります。
その他の回答 (2)
- cj_mover
- ベストアンサー率76% (292/381)
#2、cjです。訂正です。 説明コメントに間違いがありました。 If Target.Row > 30 Then Exit Sub 値を変更したセルが30行めより下だったなら、 If Target.Column > 20 Then Exit Sub 値を変更したセルが20列め(T列)より右だったなら、 以上訂正をお願いします。失礼しました。
お礼
ご回答ありがとうございます。 今後の参考にしたいと思います。
- watabe007
- ベストアンサー率62% (476/760)
こんなことかな With Range("A1") .Value = "こんにちは" MsgBox .Address(0, 0) & vbCrLf & .Value End With
お礼
ご回答ありがとうございます。メッセージボックスにセル番地と入力文字列の両方を表示させることが出来ました。
お礼
大変詳しく説明して頂き、ありがとうございます。 下記方法で表示させることが出来ました。 MsgBox "アドレスは " & a & _ vbLf & "値 は " & v このように"アドレスは"、"値は"等の語句を入れることでより分かりやすくなりました。 Changeイベントについては、今後行き詰った時に参考にしたいと思います。