• 締切済み

マクロをVisualBasicに後エラー(同時に2000→2003に)

ACCESS2000から2003にバージョンアップしました。 その際、マクロをすべてVisualBasicに変換しています。 VB変換後全く同じマクロなのですがAフォームではエラーがでず、Bフォームではエラーが出ます。 2000の時のマクロの内容:開く時のプロパティで、アクション:サイズ変更 縦0cm、横0cm(幅、高さはスペース) 変換された後のマクロ: Private Sub Form_Open(Cancel As Integer) On Error GoTo Form_Open_Err DoCmd.MoveSize 0, 0 Form_Open_Exit: Exit Sub Form_Open_Err: MsgBox Error$ Resume Form_Open_Exit End Sub *この、開く時のイベント プロシージャが全く同じものですが、Aフォームでは通り、Bフォームでは通りません。 *エラーメッセージ:「イベントプロパティに指定した式 開く時 でエラーが発生しました。プロシージャの宣言がイベントまたは プロシージャーの定義と一致していません」 ポップアップ、境界線スタイル等の画面のプロパティも同じだと思います。 どなたかご存知の方、よろしくお願いします。

  • idek
  • お礼率47% (170/361)

みんなの回答

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

>もし、他にありましたら、よろしくお願いします。 エラーの原因が特定できないので、何とも言えませんが・・・ ・まず、開く時のイベントプロシージャを丸ごと削除してみて、エラーが無くなるか確認する ・エラーが無くなれば、開く時のイベントプロシージャを作り直し、内容は空のままで様子を見る ・正常なら、イベントプロシージャの内容を記述する 上記の何処かでエラーが出るようなら、 ・データベースの最適化/修復を試みる ・それでもダメなら、新規のデータベースを作り、不具合の出るMDBから内容をインポートする 私の思いつく対処法はこんな感じです。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

エラーの内容からすると、宣言部分が怪しいのですが・・・ Private Sub Form_Open() ↑この様に、引数の数が一致していないと、質問と同じエラーが出ます。 再度確認してみてください。

idek
質問者

補足

Private Sub Form_Open() でやってみましたが、やはり同じでした。 もし、他にありましたら、よろしくお願いします。

関連するQ&A

  • アクセスVBAのエラーについて

    フォームを閉じるためにフォームにボタンを置いて、イベントプロシージャに下記のように書き込みました。すると添付画像のエラーが返ってきてマクロが動きません。 Private Sub コマンド103_Click() On Error GoTo Err_コマンド103_Click DoCmd.Close Exit_コマンド103_Click: Exit Sub Err_コマンド103_Click: MsgBox Err.Description Resume Exit_コマンド103_Click End Sub で、「ファイル-オプション-現在のデータベース」の”フォームの表示”を問題のフォームに切り替えたら問題なく動作します。 つまり”フォームの表示”で選んだフォームでしかコマンドボタンのマクロが動きません。全てのフォームでマクロが動くにはどうしたらよいのでしょうか?

  • SubではなくFunctionで作られる理由

    access2007を使っています。 素朴な疑問なのですがマクロを変換した時はなぜ Subプロシージャーではなく、Functionなのでしょうか? 「クエリを開く」と言うマクロを、VBAに変換したところ ******************************************************* Function マクロ1() On Error GoTo マクロ1_Err DoCmd.OpenQuery "クエリ1", acViewNormal, acEdit マクロ1_Exit: Exit Function マクロ1_Err: MsgBox Error$ Resume マクロ1_Exit End Function ******************************************************* となりました。 戻り値や返り値はないものは、FunctionプロシージャーではなくSubプロシージャーで作るものと思っていたのですが なぜ上記のコードはFunctionなのでしょうか? Functionで作る理由を教えてください。 特に意味はないのでしょうか? ちなみにFunctionをSubに書き換えて実行したら問題なくクエリが開きました。

  • 二つのエラーを発生させたい

    ひとつのプロシージャー内で、 二つのエラートラップを仕掛ける事は出来ないのでしょうか? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description On Error GoTo Err2 i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub を行うと、 i = "b" で2回目のエラーが発生した時は、 実行時エラーになってしまいます。 i = "b" で2回目のエラーが発生した時に、 「Err2のエラー: 型が一致しません。」 と表示させるにはどうすればいいでしょう? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 On Error GoTo Err2 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub にすると、 i = "a" のエラーで、 「Err2のエラー: 型が一致しません。」 へ移動してしまいます。

  • フォームを開く時のイベント処理

    Visual Basic 6.0 あるフォーム読込時イベント[Private Sub Form_Load()]で コマンドボタンにフォーカスを移動しようとしたら、エラーしてしましました。 Private Sub Form_Load() CommandButton.SetFocus ’プロシージャの呼び出し、または引数が不正です End Sub Form_Open や BeforeUpdate ? 開いた後にフォーカスをセット出来る イベント処理は無いでしょうか? ご教授願います。

  • ACCESS エラーメッセージ表示されない理由

    ACCESSのエラーメッセージ表示について教えてください。 ACCESS2000でマクロを作成しました。 あるデータを読み込み、テーブルへ反映させるマクロです。 マクロを直接実行すると、データが存在しないとき、当然、エラーメッセージが表示されます。 ところが、このマクロをフォームから実行させると、同じ状況でエラーメッセージが表示されません。 どこに問題があってメッセージが表示されないものなのでしょう。(正常系の処理は正しく行われます) フォームのボタンにマクロの実行を定義しただけなのですが。 VBAを開いてみても、下記のとおりクリックされたときエラーならメッセージを表示しなさいと定義されています。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click   Dim stDocName As String   stDocName = "マクロ名"   DoCmd.RunMacro stDocName Exit_コマンド1_Click:   Exit Sub Err_コマンド1_Click:   MsgBox Err.Description   Resume Exit_コマンド1_Click End Sub

  • アクセス2002 VBA

    フォームを保存せずに閉じたいのですが、 当該フォームの「閉じる時」プロパティーにイベントプロシージャを設定し、 Private Sub Form_Close() DoCmd.Close acForm, "フォーム1", acSaveNo End Sub と記述しました。  ところが、実行すると 「Close アクションの実行はキャンセルされました。」とエラーになってしまいました。  間違いの指摘をお願いします。

  • Access VBA エラートラップでの終了処理

    お世話様です。 Access2003 VBA にて、各プロシージャに貼ったエラートラップで、 メッセージを出力した後にAccessを終了したいと考えております。 ここで、通常終了時(フォームの×ボタン押下時)の 終了確認メッセージをForm_Unloadイベントで記述しているのですが、 エラートラップでの終了時にも、このメッセージが表示されてしまいます。 エラートラップでの終了時は、終了確認メッセージを表示させたくないので、 標準モジュールにパブリック変数のエラーフラグを用意し、 それで判断しようと考えたのですが、 エラートラップ内でエラーフラグに値を設定しても保持されず、 Form_Unloadイベントで終了確認メッセージがどうしても表示されてしまいます。 何か良い方法はありますでしょうか?よろしくお願いいたします。 例: '***ボタンAクリックイベント******************* Private Sub btn_A_Click() On Error GoTo ERR_LINE   <何らかの処理> Exit Sub ERR_LINE:   MsgBox "予期せぬエラーが発生しました。終了します。" & Chr(13) & _       "エラー番号: " & Err.Number & Chr(13) & _       "エラー内容: " & Err.Description, vbCritical + vbOKOnly, "例外エラー"   bl_ErrFlg = True 'エラーフラグ設定←保持されない   Application.Quit End Sub '***フォームアンロードイベント******************* Private Sub Form_Unload(Cancel As Integer)   If bl_ErrFlg = False Then     Cancel = MsgBox("終了します。よろしいですか?",vbQuestion + vbYesNo, "終了確認") = vbNo   End If End Sub

  • ACCESSで画像を参照する設定がうまくゆきません

    あまり詳しくはないですが、ACCESSを使って仕事をしています。 ひとつのデータにひとつの画像をつけたデータを扱うのですが、画像を直接テーブルに貼り付けているので非常に容量を食ってしまいます。(JPG形式です) そこでネットで色々調べて、現在データを保管しているテーブルに、パス用のテキストボックスを追加し、既存のフォームにイメージを配置して表示させる方法を試していますが、うまくゆかず、「プロシージャの呼び出しまたは引数が不正です」というエラーが出てしまいます。 プロシージャというもの自体をはじめて知ったので、ネットで引っ張ってきたコードをそのまま貼り付けて使っている状態です(テキストボックスの名前やイメージの名前は変えています) 現状は以下の通りです。 ファイル形式:ACCESS2000 使用ソフト :ACCESS2003 テキストボックス名:パス イメージ名     :参照 フォームの「レコード移動時」の「イベントプロシージャ」に貼り付けたコード Option Compare Database Private Sub パス_BeforeUpdate(Cancel As Integer) End Sub Private Sub Form_Current() '指定された画像に入れ替える処理 '2006/04/15 pPoy On Error GoTo Err_Form_Current Dim myPath As String myPath = CurrentProject.Path If Not IsNull(Me!パス) Then Me!参照.Picture = myPath & "\" & Me!パス Else '新規レコードに移動した際はデザイン時の画像を表示 Me!参照.Picture = myPath & "花.JPG" End If Exit_Form_Current: Exit Sub Err_Form_Current: MsgBox Err.Description Resume Exit_Form_Current End Sub ちなみに、この「イベントプロシージャ」も突然消えてしまったりします。 非常に困っていますので、よろしくお願いいたしますm()m

  • ACCESSエラー「モジュールがありません」

    ACCESS2000でテーブルとフォームを作っていたら下記のエラーメッセージが出てきました。 「実行時エラー'2001';直前の操作はキャンセルされました。」 その後、 「イベントプロパティに指定した式 クリック時でエラーが発生しました:モジュールがありません。※マクロ名、ユーザー定義関数名、[イベントプロシージャ]以外の式が指定されています。※関数、イベント、マクロの評価でエラーが発生しました。」 というメッセージもでてきました。また、フォームが開かなくなり誤作動をし始めたのですが原因がわかりません。どなたか回避策をご存知ないでしょうか?

  • エクセル/マクロ エラー処理がうまくいきません

    エクセルマクロの質問です。エクセルのヴァージョンは2000です。 シートをコピーして新シートに任意の名前を付けるマクロを作っています。 ユーザーフォームの中に一つのテキストボックス(新シートの名前入力用)と 二つのコマンドボタンを設置し一つは実行ボタン、もう一つはキャンセルボタンとしました。 テキストボックスに不正な名前(空白、記号、すでに存在するシート名)が入力された状態で 実行ボタンを押すと新シートは作成されず、メッセージボックスで実行できない旨が表示され、 入力フォームに戻るという感じにしようと思っています。 エラー処理には下記の通りOn Errorステートメントを試してみました。が、どうもうまくいきません。 エラーが出ても新しいシートが作成されてしまい、その後にメッセージボックスが出てしまいます。 正しいエラー処理の仕方をご教示頂けると幸いです。どうぞよろしくお願いします。 Private Sub CommandButton1_Click() Dim NewSheetName As String NewSheetName = TextBox1.Value On Error GoTo Err1 Sheets("Summary").Select Sheets("Summary").Copy After:=Sheets("Summary") ActiveSheet.Name = NewSheetName Exit Sub Err1: MsgBox "Invalid name"    Exit Sub End Sub