- ベストアンサー
メッセージボックスに変数名そのものを表示したい(Excel2000)
- VBAを使用して、メッセージボックスに変数名そのものを表示する方法について質問があります。
- 現在、メッセージボックスに表示されるのは変数「依頼日」の値ですが、変数名そのものを表示したいです。
- 具体的な方法を教えていただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
う~ん・・・・関数化するという事は当然仮引数となるわけで・・・・。 しょうがないので、引数をひとつ増やして、 Public Sub ChkNull(hikisuu As Variant, disp As String) Select Case hikisuu Case 0, Null, Nothing, "" Dim Msg As Integer Msg = MsgBox(disp & "が空欄になっていますよ。" _, vbOKOnly, "告知") End Select End Sub として、実際このチェック関数を呼び出す時に、一々表示させたい名前を「文字列で」入れるしか無いのでは。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。チェック項目名(文字列)を(仮)引数として増やすことです。 Public Sub ChkNull(hikisuu As Variant, dsp As String) Select Case hikisuu Case 0, Null, "" Dim Msg Msg = MsgBox(dsp & "が空欄になっていますよ。" _ , vbOKOnly, "告知") End Select End Sub Sub test01() Dim b As String Dim a As Variant a = "" b = "住所" ChkNull a, b End Sub で動きました。Nothingを入れると、値でないせいか、エラーになったので省きました。dispは名前がVBのステートメント等に無いかと避けました。
お礼
2度も回答いただきありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
Msg = MsgBox(hikisuu & "が空欄になっていますよ。注意してください。" _, vbOKOnly, "告知") を Msg = MsgBox("依頼日が空欄になっていますよ。注意してください。" _, vbOKOnly, "告知") ではだめですか。 小生の大誤解かなあ・・。 プログラマにはどこの(どの項目の)ことを言っているか 判っているケースが多く、メッセージコメントを書くのに 苦労しないですが。 色々な場合でこのルーチンを使うのでしょうか。
補足
説明が足らず、申し訳ありません。 ご推察のとおり、ChkNullに渡す引数は、 「依頼日」以外にも沢山あるので 前述のルーチンを使い回したいと思っています。 作成したExcelのfileを実際に使用する人達は、PCに精通していないため、 どこに空欄があるのかをはっきり知らせる必要があります。
- mshr1962
- ベストアンサー率39% (7417/18945)
Msg = MsgBox("hikisuuが空欄になっていますよ。注意してください。" _, vbOKOnly, "告知") にすれば変数名がそのまま表示されますが.... 変数名自体が変化する場合は工夫が必要になると思います。
お礼
アドバイスしていただきありがとうございました。
補足
説明が足らず、申し訳ありません。 ご推察のとおり、ChkNullに渡す引数は、 「依頼日」以外にも沢山あるので 前述のルーチンを使い回したいと思っています。 作成したExcelのfileを実際に使用する人達は、PCに精通していないため、 どこに空欄があるのかをはっきり知らせる必要があります。
お礼
回答ありがとうございました。 引数を2つ使うことで、うまくいきました。
補足
引数を渡すときに ChkNull 依頼日,"依頼日" のように記述すればよろしいのでしょうか?