• ベストアンサー

フォームが開かない

「F説明」と言うフォームは存在しているし、ナビゲーションウインドウで、ダブルクリックすると、 フォームは開くのに、なぜかVBAで DoCmd.OpenForm Forms("F説明"), acNormal とすると "実行時エラー2498 指定した式は、 いずれか の引数とデータ型が対応していません。” となります。 このvbaコードは、"F説明"の部分を変数にして使いまわしたいので、ダブルコーテーションで囲える文法にしたいのですが、どこが間違っているのか教えていただけますか。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

こんばんは うまく考えましたね 変数はコンボボックスですね DoCmd.OpenForm "F説明", acNormal

sfdasdfagwe
質問者

お礼

ご回答ありがとうございました。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

DoCmd.OpenFormに続くフォーム名は、文字列で与える必要があるからでしょう。 formName="F説明" DoCmd.OpenForm formName,acNormal http://msdn.microsoft.com/ja-jp/library/ff192694.aspx あまり意味がないですが、 DoCmdOpenForm Forms(formName).Name なら開くかというと(この間覚えたところですが)Formsコレクションには、既に開いているフォームしか含まれていないのでNGです。 DoCmd.OpenForm CurrentProject.AllForms(formName).Name なら、開きます。

sfdasdfagwe
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • 「DoCmd.OpenForm」が実行できない(vbaでフォームを開きたい)

    「フォーム1を開く」vbaで行ないたいのですが エラーになってしまいます。 Sub test1() DoCmd.OpenForm , acNormal, フォーム1 End Sub は「変数が定義されていません」と表示され (「変数の宣言を強制する」にチェックを入れています) Sub test2() DoCmd.OpenForm , acNormal, "フォーム1" End Sub は「引数は省略できません」となります。 Sub test1() DoCmd.OpenForm , フォーム1, acNormal End Sub Sub test2() DoCmd.OpenForm , "フォーム1", acNormal End Sub これにしても同じでした。 「OpenForm」をヘルプで調べてみたところ 「expression 」と「FormName」が「 必ず指定します。」でした。 「expression 」がないからだめなのでしょうか? すいません、助けてください。 よろしくお願いします。

  • フォームから別フォームを開くには?

    こんにちは。 Access2010を使っています。 開いているフォームから別のフォームを開きたいのですが、その後ろ側のみにワイルドカード(「*」マーク)を入れたいのですが、上手くいきません。 いろいろやってみましたが、「メモリ不足です」となってしまい、上手くいきません。下記コードにどのようにしてワイルドカードを入れたらよいでしょうか? DoCmd.OpenForm "開きたいフォーム名", acNormal, "", "[キー名]=[Forms]![開いているフォーム名]![キー名]", , acNormal ご教授よろしくお願い致します。

  • Access すべてのフォームを開く

    おしえてくださいm__m AccessにてWindowを最小化した後に現在開いているフォームを開くVBAを 作成しようとしていますがうまくいきません。 現在はWindowを最小化した後一つのフォームを開くVBAは下記の通り作成しました DoCmd.RunCommand acCmdAppMinimize DoCmd.OpenForm "メインフォーム", acNormal しかしながら現在開いているすべてのフォームをAccess Windowを最小化した後に 開くVBAはどのように記載すればいいでしょうか 皆さまのお知恵をかしてくださいm__m

  • ACCESS 別フォームから別フォームの処理を

    ACCESSでメインフォームから別フォームを 【メインフォーム】 DoCmd.OpenForm "FM_商品検索", , , , , acWindowNormal 【商品検索フォーム】 検索画面でJANコードを選んだらJANコードをセットして、商品マスタの読込等の処理をしたい Forms!F_仕入!F_仕入sub.Form!JANコード = Me.JANコード ↑これは動く Forms!F_仕入!F_仕入sub.JANコード_BeforeUpdate ↑これがエラーになります 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」 でエラーになります。 Forms!F_仕入!F_仕入sub.JANコード_BeforeUpdate Public Sub JANコード_BeforeUpdate(Cancel As Integer) 何がおかしいのでしょうか? 宜しくお願いします

  • [Access2000] フォーム間で値の受け渡し

    フォームから、DoCmd.OpenFormを使って、 別のフォームを子画面として開くようにしています。 そのときフォーム間で、Functionの引数と戻り値のような感覚で 値の受け渡しをしたいと思っています。 値をわたす方は、OpenFormの引数のいちばん最後にある OpenArgsを使うことでうまく解決できたのですが、 値を返す方のやり方がイマイチわかりません。   DoCmd.OpenForm "フォーム名",,,,OpenArgs     (カンマの数が間違ってるかも…とりあえずテキトーです) という記述方法の他に、   DoCmd.OpenForm("フォーム名",,,,OpenArgs) という記述もできるようなんですが、そのようにすると 「=」をつけろ、というようなエラーがその場で出ます。 MsgBoxでも同じようなことが起こりますが、 MsgBoxだと「vbOk」やら「vbCancel」やらを返してくれるので OpenFormでも似たようなことができるのかな…と思うのですが。

  • Access-フォームのCaption変更

    お願い致します。 Access97のフォームのクラスモジュールでCaptionの変更を行うコードを書いたのですが、いまいちうまくいきません。 ご指導お願い致します。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ *********************************************** Private sub Form_Load() DoCmd.OpenForm "F_OPEN" Forms!F_OPEN!Msg.Caption="お待ちください" ************************************************ このForms!F_OPEN!Msg.Caption="お待ちください" のところで、エラーメッセージ 「'Item'メソッドは失敗しました:'Forms'オブジェクト」がでてしまうのです。 お願い致します。

  • DoCmd.OpenForm メソッド (Acce

    DoCmd.OpenForm メソッド (Access)について文法が分かりません。 何卒、お知恵を借りたく存じます。 よろしくお願いします。 やりたい事は従業員番号と期間を指定してフォームを開きたいのです。 おそらく文法が間違えているのではと思っております。 DoCmd.OpenForm "TargetSelection", acNormal, , "[従業員番号]='" & TList & "' AND [日付]= Between #' & Sday & #' And '# & Eday & #'"

  • access vba 引数

    ACCESS VBA 引数取得について テキストボックスが横に3つ並んでいてその3つは同じデータのレコードで、 例えば | No | Name  |    Tel    |   ボタン  | |~~1~~|~~~山~~~~|~~99-9999-9999~~| |__更新__| | |~~2~~|~~~川~~~~|~~88-8888-8888~~| |__更新__| | |~~3~~|~~~空~~~~|~~77-7777-7777~~| |__更新__| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ となっていて、ボタンを押して別のフォームを開いてデータの更新をしたいのですが、その押したレコードのNoを引数にして別のフォームを開きたいのです。どのようにコードを書いていいのか分かりません。 今のところ引数はほかにもあるのでそれは取れていて 変数名 = (引数にしたい項目1) 変数名 = 変数名 & (引数にしたい項目2) 変数名 = 変数名 & (引数にしたい項目3) DoCmd.OpenForm "フォーム名", , , , , acDialog, 変数名  (↑openArgs) までは書けています。 押したレコードのNoを引数に加えるというところがどのようにすればいいか分かりません。 教えてください。 よろしくお願いします。m(_ _)m

  • コマンドボタン名を取得して変数に代入したい。

    OS:windowsXp Access Version:Xp 既出でしたらすみません。 INDEXのフォームにて複数コマンドボタンを作り、それを押すと各登録フォームや集計フォームが開くようにしています。 さて、質問なのですが、コマンドボタンで別のフォームを開く時の処理を(フォーム名が違うだけで後は同じなので)まとめて書きたいのです。 現在は次のようにやっています。 ------------------------------------------------- Private Sub F_メニュー_Click() Call close_form DoCmd.OpenForm "F_メニュー", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub F_売上伝票_Click() Call close_form DoCmd.OpenForm "F_売上伝票", acNormal, , , acFormEdit, acWindowNormal End Sub      (中略) Private Sub 事業所別集計_Click() Call close_form DoCmd.OpenForm "F_事業所別集計", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub 消費税変更_Click() Call close_form DoCmd.OpenForm "F_消費税変更", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub システム終了_Click() Call close_form DoCmd.RunCommand acCmdExit End Sub Private Sub close_form() msgbx = False DoCmd.Close acForm, "index", acSaveYes End Sub ------------------------------------------------- これを  ボタン名_Click() ではなく  frm_open() 押されたボタン名を変数に取得(ボタン名=Form名にします。) DoCmd.OpenForm 押されたボタン名変数 のように共有したいのです。 どうすれば出来ますでしょうか?ご指導よろしくお願いします。

  • OpenForm

    AccessVBAで DoCmd.OpenForm "メインメニュー", acNormal, "", "", , acNormal という記述がありますが、式.OpenForm(FormName, View, FilterName, WhereCondition, DataMode, Window Mode, OpenArgs)で引数を合わせていくと個数があいません。最後のacNormalは、どれでしょうか?

専門家に質問してみよう