• ベストアンサー

エクセルのVBAのエラー

早速ですが、よろしくお願い致します。 単純なマクロですが、下記の記述は実行すると、ただメッセージボックスが表示される…つもりです。 タイトルが「確認メッセージ」、文字は「完了しました」、ボタンは「OK」のみです。 しかし、エラーになってしまいます。(コンパイルエラー 構文エラー) Sub test()   MsgBox ("完了しました",vbOKOnly,"確認メッセージ") End Sub どこが間違っているのでしょうか?? ご教授をお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hardy50
  • ベストアンサー率29% (221/746)
回答No.1

んーエクセルいじったことないけどVBならあるので・・・ (   )いるのかな? OKボタンだけならいらないかもしれないよ。

t_ohmori
質問者

お礼

おっしゃる通りでしたm(__)m (   )は入りませんでした。って言うか私の持っているテキストの間違えみたいです ありがとうございました\(^o^)/

関連するQ&A

  • MsgBoxがコンパイルエラーになります

    エクセルにてマクロを作成しているのですが、 今まで問題なく動いていたMsgBoxがコンパイルエラーになります。 MsgBox("テスト", vbOKOnly, "テスト") と打っても、 「コンパイルエラーです。修正候補:=」 表示されるようになりました。 今までは、これと同じように打っていても何も問題がなかったのに、 突然、このようになりました。 ちなみに、今まで正常に動いていたものをまったく同じように打っても エラーになります。 まったく原因がわかりません。 どなたかおわかりになる方、よろしくお願いします。

  • VBA Date が実行できない。

    Sub test() MsgBox Date End Sub を実行すると 「コンパイルエラー: プロジェクトまたはライブラリが見つかりません。」 というエラーが出てしまいます。 何が間違っているのでしょうか? 先日まで実行できたのにいきなりできなくなってしまいました。 どうすればいいのでしょうか? よろしくお願いします。

  • 同じマクロ名でも、違うモジュールならエラーにならな

    同じマクロ名でも、違うモジュールならエラーにならない? エクセルVBAについてご教授ください。 標準モジュールに ――――――――― Option Explicit Sub CommandButton1_Click() MsgBox "" End Sub Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― と同じマクロ名を2つ作ったら、コンパイルエラーになりますが、 上記のコードは一度消して、フォームモジュールに ――――――――― Private Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作り、 標準モジュールに ――――――――― Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作った場合は、エラーにならずにマクロを実行できました。 これは、フォームモジュールがPrivate Subだからでしょうか? フォームモジュールに1つ、 標準モジュールに1つ なら同じマクロ名を使っても、エラーにならないという事でしょうか? よろしくお願いします。

  • エラーメッセージを変更できますか?

    エクセルで在庫表の管理をしています。 ユーザーフォームで「抽出」ボタンと「すべて表示」ボタンを作成しましたが 既に”すべて表示”されている状態で「すべて表示」を実行すると 「実行時エラー'1004'」が表示されます(当然ですが・・・) このエラーメッセージを自作のメッセージボックスに変えたいのですが可能でしょうか? [すべて表示] Private Sub 抽出Buttonすべて_Click() ActiveSheet.ShowAllData End Sub [エラーになった場合変更したいメッセージ] Sub 表示エラー() MsgBox "すべて表示されています", vbOKOnly End Sub エラーメッセージの[終了]を、メッセージボックスの[OK]にしたいのですが。。。

  • 【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の記述で・・・OTL

    エクセルVBAの記述で・・・OTL VBA初心者です。 まず、私が記述した内容を書きます。 Sub 実践練習() Dim tuika As String tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する内容を入力して下さい。", _ Left:=650, _ Top:=100, _ Type:=2) If Worksheets("Sheet2").Range("G10").Value <> " FALSE " Then MsgBox "OKです", vbOKOnly + vbDefaultButton2, "追加完了" With Worksheets("Sheet2") .Range("G10").Value = tuika LastRow = Worksheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet3").Range("A" & LastRow).Value = Worksheets("Sheet2").Range("G10").Value End With Else MsgBox "入力が不足しています。", vbOKOnly + vbCritical, "入力ミス" End If End Sub() 完成させたいことは・・・ Sheet1に存在するInputbox(ボタン)を使用し、 Sheet2のG10にFALSE以外が入力されたときは、 MsgBox追加完了のダイアログを表示してSheet2のG10値をSheet3のA列に順番に転送させる。 もしFALSEが入力されてしまったら、 MsgBox入力ミスを表示させて、 Sheet2のG10の値(FALSE)を削除しなさい。 と、記述したいのです。 勿論、上記の記述は完成していません(泣 どなたか、ご教授の程、何卒宜しくお願い致します。 (上記の完成型をお待ちしてます m(_ _)m ) 【環境】 OS:WindowsXP Pro Excel:2003

  • 効率の良いテキストボックスの検知について

    VB6の初心者です。質問させていただきます。 画面上に5つのテキストボックス(TEXT1、TEXT2、TEXT3、TEXT4、TEXT5)と 1つのコマンドボタン(Cmd_SAVE)があり、 画面上の5つのテキストボックスをすべて記入し、 コマンドボタンを押すと、登録確認のメッセージボックスが表示され、 OKボタンを押すと、サーバへ転送され、 画面上のテキストボックスにひとつでも空欄があると、どのテキストボックスが 空欄であるかを示すメッセージが表示される処理をさせています。 そこで質問なのですが、今、メッセージボックス、登録処理は出来るようになったのですが、 とても処理の効率が悪い、もっと空欄を確認するのにすっきりとしたコードはある、と知り合いに言われました。 おそらく、繰り返し等を用いると思うのですが、メッセージにそれぞれのオブジェクト名を代入するやり方がわかりません。 下記が今のコーディングです。 Private Sub Cmd_SAVE_Click()   If TEXT1.Text = "" Then      MsgBox "TEXT1が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT2.Text = "" Then      MsgBox "TEXT2が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT3.Text = "" Then      MsgBox "TEXT3が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT4.Text = "" Then      MsgBox "TEXT4が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT5.Text = "" Then       MsgBox "TEXT5が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If MsgBox("入力データを登録しますか?", vbOKCancel, "登録確認") = vbCancel Then     Exit Sub   End If   End If ~登録処理~ End Sub どのような書き方がきれいで、効率的なコーディングなのでしょうか? ご教示お願いします!

  • VBAどこがおかしいのかわかりません。

    画像の左下の新規から発注をかけ、それを選択して開く。とやると開くように作り、選択してないで開くを押すとエラーメッセージが出てくるようになっているのですが、選択して開くとやっても選択してくださいというエラーメッセージが出てきてしまいます。 Private Sub btn_open_Click() '## 「開く」ボタンクリック時 '値チェックと更新 If Not isSearch Then Exit Sub '選択項目がなければ終了 If Me.lbx_table.ListIndex = -1 Then MsgBox "対象のデータを選択してください", vbOKOnly + vbExclamation, "注意" 'メッセージボックスを出力 Exit Sub '終了 End If '発注依頼情報編集フォームを開く F_Odr_Editor.Show End Sub こんな感じでコードを書いたのですが どこが間違っているのでしょうか? よろしくお願いします。

  • vbaにvlookupを組み込む

    お世話になります。 エクセルのマクロにvlookupを組み込みたいのですが,エラーが出てしまいます。 用意したものは「顧客名簿」というシートで,A列に顧客番号(6ケタの数字),B列に顧客名が入っています。C列以降はその他のデータが入っています。 「トップメニュー」というシートにあるマクロボタン「顧客抽出」を押すと,インプットボックスが現れます。これに顧客番号を入力すると,メッセージボックスが現れます。 この時のメッセージボックスに,インプットボックスに入力された番号により「顧客名簿」から顧客名を取り出し,「○○さんのデータを表示しますか」としたいのですが,ここでエラーが出ます。(○○は,「顧客名簿」のB列にある名前です) 実行時エラー 1004 WorksheetFunctionクラスのVLookupプロパティを取得できません。 組んであるマクロは以下の通りです。 Sub 顧客抽出() Dim ans As String, ans2 As String     ans = InputBox("顧客番号を入力", "入力", "")         If ans = "" Then             MsgBox "顧客番号が空白です" & vbNewLine & _                "処理を中止します", vbOKOnly         Else             If WorksheetFunction.CountIf(Worksheets("顧客名簿").Range("A1:B5000"), ans) = 0 Then                 MsgBox "顧客番号が登録されていません", vbOKOnly             Else                 ans2 = WorksheetFunction.VLookup(ans, Worksheets("顧客名簿").Range("A1:B5000"), 2, False)                 If MsgBox(ans2 & " さんのデータを表示しますか", vbYesNo) = vbYes Then                     Sheets("顧客情報").Select                     Range("D4").Value = ans                 Else                     MsgBox "処理を中止します", vbOKOnly                 End If             End If         End If End Sub 途中にある ans2 = WorksheetFunction.VLookup(ans, Worksheets("顧客名簿").Range("A1:B5000"), 2, False) の部分でエラーが出るのですが,解決策が見当たりません。 おそらくRange("A1:B5000")の部分に不具合があると思うのですが,どう対処すればいいでしょうか。 詳しい方,ご教授願います。

  • メッセージを表示する関数の引数について

    はじめましてよろしくお願いします。 現在、Access2002でメッセージを表示する関数を作成していますが、 引数を増やしたらどうしてもコンパイルが通らず困っています。 やっていることは標準モジュールに Public Sub ExcMsgBox(MSG As String, Title As String)   MsgBox MSG, vbOKOnly + vbExclamation, Title End Sub という関数をつくってフォームから ExcMsgBox ("入力必須項目が全て入力済でないため、" & _       vbCrLf & "編集内容を保存できません。","入力必須項目") という形で呼び出していますが、 これだと「コンパイルエラー、修正候補 =」と出ます。 SUBで関数宣言しているので、戻り値は無いはずなのですが TEST = ExcMsgBox ("入力必須項目が全て入力済でないため、" & _       vbCrLf & "編集内容を保存できません。","入力必須項目") とするとその場のコンパイルエラーは避けられるのですが、実際に実行すると やはり「コンパイルエラー Functionまたは変数が必要です」というエラーがでます。 関数を Public Sub ExcMsgBox(MSG As String)   MsgBox MSG, vbOKOnly + vbExclamation End Sub のように引数を一つ減らして、フォームから ExcMsgBox ("入力必須項目が全て入力済でないため、" & _       vbCrLf & "編集内容を保存できません。") のようにして呼ぶと正しくメッセージボックスが表示されるのですが。 基本的なことで何か勘違いしているかもしれませんが、何かお気づきの点が ありましたらご教授ください。よろしくお願いします。

専門家に質問してみよう