• 締切済み

VBAでの不明な点

いつもお世話になっております。当方まだVBAを始めて3日ほどの新参者です。 以下のようにVBAにコードを書いたのですがどうしてもYESNO型になりません。 OKボタンしか表示しないのでぜひご指導頂けたらと思います。 バージョン:アクセス2010 Private Sub コマンド12_Click() Dim Rei As String Rei = MsgBox("【" & Format([Forms]![frm1200:合計金額]![合計金額], "#,###" & "円" & "】" & Chr(13) & Chr(13) & "金額は正しいですか?", vbYesNo)) If Rei = vbYes Then MsgBox ("OK") End If よろしくお願いします。まだ新参者なので他にご質問があればいくらでも補足しますので教えて下さい。 End Sub

みんなの回答

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

あー・・惜しいですねぇ。 括弧()の位置の問題ですね。 ご自身で書いたコードを先頭から眺めてみましょう。   Format(略,"#,###") ←この括弧(トジ)が末尾に行っちゃってますね。 なので、「最後までFormatの引数」として扱われちゃってます。 伴って、「メッセージボックスの型は省略された」と見られちゃったようですね。 余談ですが、この「型」を省略すると「vbOKOnly」を指定したと見られ、 > OKボタンしか表示しない 状態にされてしまいます。併せて覚えておくと良いかもです。 ですので、正しい位置に括弧(トジ)を持って行ってやれば解決です。 つまり   Rei = MsgBox("【" & Format([Forms]![frm1200:合計金額]![合計金額], "#,##0") & "円】" & Chr(13) & Chr(13) & "金額は正しいですか?", vbYesNo) ちょっとだけ(私の好みに)てを加えていますが、こんな感じですね。 以下、余計なお世話かもしれませんが・・・ 見た感じ、フォームの名前に「:(半角)」を使っていらっしゃいますか? 個人的にコレはあまりオススメしません。 今はまだあまり実感もないかもしれませんが、後々不具合を誘発する可能性があります。 http://support.microsoft.com/kb/826763/ja 少々古い情報ですが、こちらも併せて参考までにどうぞ。

回答No.3

Option Compare Database Public Function Verify(ByVal Msg As String, _     Optional ByVal DefaultButton As Integer = vbDefaultButton1) As Integer   Verify = MsgBox(Msg, vbYesNo + vbQuestion + DefaultButton, "確認") End Function Public Sub Message(ByVal Msg As String)   MsgBox Msg, vbInformation, "お知らせ" End Sub Public Sub Warning(ByVal Msg As String)   MsgBox Msg, vbExclamation, "警告" End Sub Public Sub ErrorMsg(ByVal Msg As String) MsgBox Msg, vbCritical, "エラー発生のお知らせ" End Sub これらは、MsgBox()の活用例です。 ・確認したい時 ・単にメッセージを表示したい時 ・警告を発したい時 ・エラーを告知したい時 に、vbYesNo、vbInformation、vbExclamation、vbCriticalを使い分けるのは至難。 そういう煩わしさは Verify()、Message()等を用意すると解消されます。 その場合、コードは次のように簡略化されます。 Private Sub コマンド12_Click()   Dim Answer As Integer   Answer = Verify("金額は正しいですか?")   If Answer = vbYes Then     Message "OK"   End If End Sub

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

ちなみに If MsgBox("【" & Format([Forms]![frm1200:合計金額]![合計金額], "#,###") & "円" & "】" & Chr(13) & Chr(13) & "金額は正しいですか?", vbYesNo) = vbYes Then MsgBox "OK" End If のように一度に書くこともできますよ。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

括弧の位置が違います Rei = MsgBox("【" & Format([Forms]![frm1200:合計金額]![合計金額], "#,###" & "円" & "】" & Chr(13) & Chr(13) & "金額は正しいですか?", vbYesNo)) ↓ Rei = MsgBox("【" & Format([Forms]![frm1200:合計金額]![合計金額], "#,###") & "円" & "】" & Chr(13) & Chr(13) & "金額は正しいですか?", vbYesNo) にしてください。

関連するQ&A

専門家に質問してみよう