• 締切済み

VBAでの不明な点

tsubuyukiの回答

  • 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 少々古い情報ですが、こちらも併せて参考までにどうぞ。

関連するQ&A

  • Excelで,特定のシートを開いたときにメッセージボックスを表示するに

    Excelで,特定のシートを開いたときにメッセージボックスを表示するには? Excelを使用しているときに,例えばSheet3を開いたとき,メッセージボックスが開くようにしたいです。 個人的に考えているのは,そのシートの「コードの表示」で現れるVisual Basicの部分に Private Sub Worksheet_Open() YesNo = MsgBox("メッセージ。よろしいですか?", vbYesNo) If YesNo = vbYes Then End If このようなマクロを入れるといいのかと思いましたが動きません。 どこが間違っているのでしょうか?

  • メッセージボックスの使い方

    MsgBoxで困っています。よろしくお願いします。 現在、次のように書いています。 Sub消去する() タイトル = "データを消去" メッセージ = "すべてのデータを消去します。いいですか?" スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal yesno = MsgBox(メッセージ, スタイル, タイトル) If yesno = vbYes Then Range("E10:E109").Select Selection.ClearContents End If End Sub ところがこれだと、何もデータがないのに削除しようとします。 そこで、 1. データがない時には「MsgBox ("個数が入っていません"), vbExclamation」を出して終了する。 2. データがある時には初めに書いているメッセージを出す。 こんな具合にしたいのです。 ご指導よろしくお願いします。

  • Vbscriptエラー

    vbでメッセージBOXを用いてプログラムを起動できるようにしたいのですがエラーが出てしまいます。「インデックスが有効範囲にありません。」 どこが間違っているのでしょうか? ーーーーーーー Dim objWShell Dim a Dim b a = MsgBox (" 「」を利用。"&Chr(13)&Chr(13)&_ "    「」?    "&Chr(13)&Chr(13)&Chr(13)&_ " ---------------------------- "&Chr(13)&_ "  お問い合わせください。" , vbYesNo,"「r」") ' MsgBox vbYes&"="&a If a = vbYes Then Set objWShell = CreateObject("WScript.Shell") b = WScript.Arguments(0) If b = 0 Then objWShell.Run "C:\Windows\System32\notepad.exe" ,vbNormalFocus,False ' End If End If ーーーーー

  • VBAで教えてください。

    データがないときはExitSubしたいのですが、何処に記述すれば良いでしょうか? Sub 削除() Dim i As Long If MsgBox("データを削除します。よろしいですか?", vbYesNo) = vbYes Then Sheets("リスト").Select i = 5 Do Until i = 200 If Cells(i, 5).Value = Sheets("マスタ登録").Range("D5") Then Cells(i, 1).EntireRow.Delete End If i = i + 1 Loop Else Exit Sub End If End Sub

  • エクセル メッセージボックスにタイトルとアイコンを入れる方法を教えてください。

    こんにちは。いつも大変お世話になってます。 If (vbYes <> MsgBox("実行しますか?", vbYesNo)) Then Exit Sub End If 以上のようなVBAを書きました。YESなら実行、NOならキャンセルです。 ここまではなんとかできたのですが、このメッセージボックスにタイトルと?マークのアイコンを追加するにはどうしたら良いのでしょうか?

  • エクセル/BeforeCloseイベントで保存できない!?

    エクセル2000です。 以下の_BeforeCloseイベントのマクロ(非常に簡略化してますが)ですが、標準モジュールに設定した Sub 終了() ActiveWorkbook.Close End Sub から終了させた場合、ActiveWorkbook.Saveの部分だけが働かないようです。 エクセル画面右上の×で終了させた場合は保存されます。 どうしてでしょうか? Private Sub Workbook_BeforeClose(Cancel As Boolean) With Sheet1 If .Range("A1") <> .Range("B1") Then ret = MsgBox("変更を保存しますか?" _ + Chr(&HD) + Chr(&HA) + "" _ + Chr(&HD) + Chr(&HA) + "新:" & .Range("A1") _ + Chr(&HD) + Chr(&HA) + "旧:" & .Range("B1"), vbYesNo + vbQuestion, " 確認") If ret = vbYes Then ActiveWorkbook.Save '←なぜ保存されないの?! MsgBox "保存しました" ThisWorkbook.Saved = True ActiveWorkbook.Close (False) End If Else ThisWorkbook.Saved = True ActiveWorkbook.Close (False) End If End With End Sub

  • VBAからIEの操作

    グーグルをIEで開いてVBA(語句)を検索して見終わったら IEを閉じる作業をしたいのですが、検索窓にVBA(語句)を 入力するところでエラーとなります。初心者ですが、なんとか 勉強したいのでよろしくお願いいたします。 Sub ie_test_Navigate() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.google.co.jp/" IE.document.all.q.Value = "VBA" IE.document.all.btnG.Click If MsgBox("IEを閉じますか?", vbYesNo, "終了確認") = vbYes Then objIE.Quit End If Set objIE = Nothing End Sub

  • 【VBA】コンパイルエラーについて

    Excelシートが5枚あり、 MsgBoxを使って、印刷したいシートの場合はOKボタンを押下し印刷します。 1枚目のシートが終わったら、2回目の MsgBoxがでて、印刷するかを判定します。 以下のような、VBAを記述したのですが、なぜかコンパイルエラーになってしまいます。 ※NEXTに対応するFORがありませんとエラー表示されます どこが誤りになるのか教えていただけると助かります。 お手数お掛けいたしますが、よろしくお願い致します。 ================================================================ Sub 必要なシートだけ印刷() Dim i As Long For i = 1 To 5 '←処理を5回繰り返す Worksheets("シフト表(" & i & ")").Select rc = MsgBox("印刷するシフト表を選択します。" & vbCrLf & "シフト表(" & i & ")""を印刷しますか?", vbYesNo + vbQuestion, "確認") 'もしyesを選択したら If rc = vbYes Then ActiveSheets.PrintOut '←印刷する Next i Exit Sub '←プロシージャから抜け出る End If End Sub ================================================================

  • セルの値を削除するVBA

    Excel2003を使い、名簿リストのようなものを作成しました。 ワンクリックで一部情報をすべて削除できるように、ボタンに対してマクロを組んだのですか、 なぜか、 実行時エラー'1004' RangeクラスのSelectメゾットが失敗しましたと表示されます。 ボタン処理のソースはこれです↓ Private Sub CommandButton1_Click() メッセージ = "本当に削除しますか" スタイル = vbYesNo タイトル = "一部削除" YESNO = MsgBox(メッセージ, スタイル, タイトル) If YESNO = vbYes Then   Sheets("リスト").Select Range("C2:E101").Select Selection.ClearContents Sheets("設定").Select ActiveWindow.SmallScroll Down:=39 Range("B57:H57").Select   完了 = "削除しました" スタイル = vbOKOnly dds = MsgBox(完了, スタイル, タイトル) Else End If End Sub これを↑どういった風に改変すればエラーがでなくなるのか?ご存じの方教えてください。 よろしくお願いします。

  • VBA 加算演算時のトラブル

    事務処理用に準備したVBA処理の数値合計チェックにて本来イコールとなるべきところ、ノットイコールと判定されてしまいます。当該部分を抜き出し、わかりやすくしたものが下記のロジックですが、ここで、test2,test4は結果がイコールとなるものの、test3の場合、ノットイコールとなってしまいます。どなたか、原因につき教えていただけませんか? Dim aaa As Double Dim bbb As Double sub test2() bbb = 16.67 + 16.67 aaa = 33.34 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End Sub Sub test3() bbb = 16.67 + 16.67 + 16.67 aaa = 50.01 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End Sub Sub test4() bbb = 16.67 + 16.67 + 16.67 + 16.67 aaa = 66.68 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End sub