VBA別館・Python別館

64442

MsgBoxの使い方 (完) - Tak

2018/09/09 (Sun) 17:32:57

VBAでプログラムを書いた後、プログラムを動かすとエラー続出なんてことは日常茶飯事です、僕は。

そこで対策を考える訳ですが、いつもすぐcodeのエラーを見つけられるわけではありません、僕は。

対策の一つにプログラムの途中にmsgboxを入れておくと、そこでstopしてその時点での変数などの値を教えてくれます。

① MsgBoxの書き方

・msgboxと小文字で書けばMsgBoxと自動で修正してくれます。

・よく急いでsmgboxなどとタイプすると、そのままで変換されませんので、すぐスペルエラーと分かります。

では基本的な使い方を述べます。

・変数とかの表示ではなく、プログラムを一時ストップさせたいところに MsgBox ("こんにちは") と書きます。

・Option Explicit

Private Sub CommandButton1_Click()
MsgBox ("こんにちは")
End Sub

・すると図の様に表示されて、プログラムはそこで一時ストップします。 ということはそこまでは問題なく動作したということになります。

これだけでは殆ど意味有りませんので、変数の値を表示させましょう(次回)。

Re: MsgBoxの使い方 - Tak

2018/09/10 (Mon) 08:27:05

② 変数を表示させる

例として1+2+3+・・・+100の計算をさせるcodeを書きます。

変数nとmを宣言します。n=100の時の合計が変数mに格納されます。

その値をmsgboxで表示させる例題です。 sheet上でやればよいだけの話ですが、msgboxで表示させる例として挙げました。 またVBA機能としてイミディエイト・ウインドーと言う本格的な変数チェック機能もありますが、ここではmsgboxで確認する方法を述べてます。

------------------------------

Private Sub CommandButton1_Click()

Dim n As Long, m As Long

n = 100

m = n * (n + 1) / 2

MsgBox ("1から100までの合計は= " & m & "です。")

End Sub

------------------

m = n * (n + 1) / 2 多分高校の数学で習う式です。 何でもよいですから、変数を宣言して確認してみましょう。

MsgBox ("1から100までの合計は= " & m & "です。") の説明をします。

・msgboxは()の中に書き込みます。 半角英数字。

・文字列は必ず""で囲みます。 ”"は必ず半角(全角で入れても自動で半角になる)。 ""のなかなら日本語OK。

・変数はそのまま使います。

・文字列と変数を一緒に表示したいときは、& でつなぎます。

よって、 MsgBox ("1から100までの合計は= " & m & "です。") と書くと図の様に表示されるわけです。



応答型MsgBox - Tak

2018/09/11 (Tue) 08:17:04

③ 応答型MsgBoxの完璧な使い方

先にcodeを書きます。

----------------------

Option Explicit

Private Sub CommandButton1_Click()

Dim myBtn As Integer, myMsg As String
Dim myTitle As String

myMsg = "データを削除しますか?"
myTitle = "データの確認"
myBtn = MsgBox(myMsg, vbYesNo + vbExclamation, myTitle)

 If myBtn = vbYes Then
  Worksheets("Sheet1").Activate
  Cells.ClearContents
 End If

End Sub

-------------------------------

各変数の意味は図を参照ください。

やっていることは;
・「Sheet1上のデータを消しますか」とMsgBoxで確認する

・Noなら何もせず処理を終える

・YesならSheet1上のデータ(ここでは乱数)を全部廃棄する。

これで応答型MsgBoxの稿を終わります。

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.