- ベストアンサー
名前が適切ではありません。
以前下記の質問をした者ですが http://okwave.jp/qa2672556.html 帳票フォームから詳細フォームを開く際に 「名前が適切ではありません。」とエラーが出てしまい 詳細フォームが開けなくなってしまいました。 詳細情報_利用者名_を開く_Click という名前が間違っているらしいのですが そのようなマクロもモジュールもありません・・・
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
帳票フォームのエラーですが、イベントプロシージャの二重定義で、同じエラーが発生しました。帳票フォームのデザイン画面→表示→コードでソースを表示して Private Sub 詳細情報_利用者名_を開く_Click() 内容省略 End Sub ↑この記述が複数箇所にないか確認してください。 重複していれば、削除して1つにして下さい。 -------------------------------------------- マクロのみで実行した場合のエラーですが、 SysCmd(10,2,"詳細情報(利用者名)")<>0 SysCmd(10,2,"詳細情報(利用者名)")=0 ↑この部分で、"" を忘れてませんか? SysCmd(10,2,詳細情報(利用者名))=0 ↑この様に "" を忘れると、「指定した式に、Microsoft Office Accessが見つけることができない関数名が含まれています。」になりました。 -------------------------------------------- 補足 帳票フォームのコマンドボタンの名前は「詳細情報_利用者名_を開く」ですか?もしそうなら、補足して頂いたイベントプロシージャとは名称が異なります。 「詳細情報_利用者名_を開く」のイベントプロシージャは Private Sub 詳細情報_利用者名_を開く_Click() 内容省略 End Sub ↑この様な名称になります。 >Private Sub コマンド0_Click() ↑この記述は コマンド0 と言う名前のコマンドボタンのイベントプロシージャになります。コマンド0 というボタン既にがなければ、使われてないので消しても大丈夫です。 コマンドボタンの名称を変更すると、使われないコードが残る場合があります。まぁ、ほっておいても問題ないですが・・・
その他の回答 (5)
- venzou
- ベストアンサー率71% (311/435)
>因みにこの詳細フォームはテーブル内全てのレコードが出ていました。 帳票フォームを開いておいて実行すると、レコード指定になると思います。 ------------------------------------- マクロではエラー 変換したモジュールではエラーなし って事ですよね。システムの不具合でしょうか? どうしようもないですね。(^^; 最後に1つだけ気になることが有るので、暇な時にでも試していただけますか? 検索一覧(利用者名) 詳細情報(利用者名) フォームの名前に()を使っていますが、ひょっとしたらこれが原因かもしれません。アンダーバー _ などに変えてみて下さい。 検索一覧_利用者名 詳細情報_利用者名 これで、解決しないなら、私はギブアップします。 これを機会に、VBA派になりませんか?(笑)
補足
今まで親切な回答ありがとうございました^^ モジュールの方では正常な動作できるのにマクロではできない。 自分のPCではできないのにvenzouさんのPCではできる・・・ いろいろ謎が多かったですが(笑 ()も試してみましたがやはり例のエラーが・・・ マクロを作り直しても直らないのでもうVBA派になってしまおうと思います(笑 他の場所はマクロで組んでいたので逆にそのマクロの部分をVBA化してみようと思います。 本当に助かりました! ありがとうございました。
- venzou
- ベストアンサー率71% (311/435)
補足していただいた内容をコピーして実行してみましたがエラーになりませんでした。環境の違いでしょうか?こちらは Access2000 です。 原因を特定するために、試して頂きたい事があります。 1:変換したモジュールの実行 ・変換したモジュールを開く ・Function 検索一覧_利用者名_・・・ の行をクリックして、カーソルを移動 ・F5 で実行 エラーは出ますか? 2:1でエラーが出る場合、エラー行の特定 ・On Error GoTo ・・・ の行の先頭に ' を入れ、コメントアウトする 'On Error GoTo ・・・ ・1と同様に実行する ・エラーメッセージで「デバッグ」を選択 どこでエラーになったのか分かりますので教えてください。
補足
回答ありがとうございます。 こちらの環境はaccess2003になります。 環境の違いもあるんですかね・・・ >1:変換したモジュールの実行 >・変換したモジュールを開く >・Function 検索一覧_利用者名_・・・ の行をクリックして、カーソルを移動 >・F5 で実行 こちらをやってみたところ、 詳細フォームが開いてきました。 エラーは出なかったようです。 因みにこの詳細フォームはテーブル内全てのレコードが出ていました。 ですがマクロだけを実行すると前と同じ 「指定した式に、Microsoft Office Access が見つけることができない関数名が含まれています。」 となってしまいます。 >・Function 検索一覧_利用者名_・・・ の行をクリックして、カーソルを移動 これは全体にドラックするという意味ではなく、その行だけ青くさせる感じでよかったですか? 一応両方試しましたが詳細フォームは開いてきました。 よろしくお願い致します。
- venzou
- ベストアンサー率71% (311/435)
>正常に帳票フォームから詳細フォームを閲覧できました。 取り合えず、1件解決ですね。 >""この間は帳票フォーム名でよろしかったですかね? その通りです。私の方の勘違いでした。 マクロの内容を再度確認しますと、 1行目 条件:SysCmd(10,2,"検索一覧(利用者名)")<>0 アクション:フォームを開く フォーム名:詳細情報(利用者名) ビュー:フォームビュー Where条件式:[riyou_id]=[Forms]![検索一覧(利用者名)]![riyou_id] 2行目 条件:SysCmd(10,2,"検索一覧(利用者名)")=0 アクション:フォームを開く フォーム名:詳細情報(利用者名) ビュー:フォームビュー ↑こうなってると思います。 もし、上記のマクロでもエラーがでるなら、 「ツール」→「マクロ」→「マクロを Visual Basic に変換」 で、変換して(新しいモジュールが出来ます)、その内容を補足してください。 >補足は週末を挟んでしまい まったく気にしてませんので、ご心配なく。 お時間のある時にお返事いただければ結構ですよ。
補足
回答ありがとうございます。 >「ツール」→「マクロ」→「マクロを Visual Basic に変換」 ---------------------------------------------------------- Function 検索一覧_利用者名_より詳細情報_利用者名_を開く () On Error GoTo 検索一覧_利用者名_より詳細情報_利用者名_を開く_Err If (SysCmd(10, 2, "検索一覧(利用者名)") <> 0) Then DoCmd.OpenForm "詳細情報(利用者名)", acNormal, "", "[riyou_id]=[Forms]![検索一覧(利用者名)]![riyou_id]", , acNormal End If If (SysCmd(10, 2, "検索一覧(利用者名)") = 0) Then DoCmd.OpenForm "詳細情報(利用者名)", acNormal, "", "", , acNormal End If 検索一覧_利用者名_より詳細情報_利用者名_を開く_Exit: Exit Function 検索一覧_利用者名_より詳細情報_利用者名_を開く_Err: MsgBox Error$ Resume 検索一覧_利用者名_より詳細情報_利用者名_を開く_Exit End Function ------------------------------------------------------ というモジュールができました。 * 別PCにアクセスの環境があるのでコピーでなく手書きです >お時間のある時にお返事いただければ結構ですよ。 大変助かります! というよりお手間をかけますです・・・
- venzou
- ベストアンサー率71% (311/435)
原因が特定できませんので、もう少し詳しい情報をお願います。 ・イベントプロシージャの場合の実際のソース ・エラーの詳細(エラーメッセージを省略せず詳しく) ・マクロの場合のエラーの詳細 ・マクロを単体で実行した場合どうなるのか? (帳票フォームを開いておいて、マクロ実行してください。) ・詳細フォームは単体で開けるのか?
補足
回答ありがとうございます。 補足が遅くなってしまい申し訳ありません(汗 >・イベントプロシージャの場合の実際のソース Private Sub コマンド0_Click() On Error GoTo Err_コマンド0_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "詳細情報(利用者名)" stLinkCriteria = "[riyou_id]=" & Me![riyou_id] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド0_Click: Exit Sub Err_コマンド0_Click: MsgBox Err.Description Resume Exit_コマンド0_Click End Sub >・エラーの詳細(エラーメッセージを省略せず詳しく) イベントプロシージャの場合のエラーは イベントプロパティに指定した式 クリック時 でエラーが発生しました:名前が適切ではありません:詳細情報_利用者名_を開く_Click *マクロ名、ユーザー定義関数名、[イベントプロシージャ]以外の式が指定されています。 *関数、イベント、マクロの評価でエラーが発生しました。 と、なりました。 -------------------------------------------------- >・マクロの場合のエラーの詳細 名前が適切ではありません:詳細情報_利用者名_を開く_Click >・マクロを単体で実行した場合どうなるのか? これはマクロのみで実行ということでよろしいですよね 指定した式に、Microsoft Office Accessが見つけることができない関数名が含まれています。 >・詳細フォームは単体で開けるのか? 詳細フォーム単体では表示は可能ですが、テーブルの情報全て表示してしまっています。 頼りきってしまって本当に申し訳ないです・・
- venzou
- ベストアンサー率71% (311/435)
補足願います。 帳票フォームのコマンドボタンを押した時にエラーが出るのですよね? そのコマンドボタンのプロパティ → イベント → クリック時 この内容はどうなってますか? 前回の質問では、マクロを使うというお話だったと思いますが、マクロになってますか?
補足
回答ありがとうございます。 以前はテスト用にフォームとモジュールを組んでいたのですが 本番用のフォームと組むと出来なくなってしまいました。 モジュールも削除して作り直しても結果は同じでした。 >帳票フォームのコマンドボタンを押した時にエラーが出るのですよね? そうです。その詳細フォームに行く時のコマンドボタンで発生してしまいます イベントプロシージャにしてもマクロにしても少し内容は違うのですが 名前が適切ではありません。とでます これはフォーム自体を作り直したほうがいいんでしょうか・・・
補足
度々の回答ありがとうございます。 イベントプロシージャに関しましてはvenzouさんの言うとおり イベントプロシージャに複数同じ内容のものがありました。 そしてイベントプロシージャに指定しているコマンドボタンの名前も間違っていたのでここも修正しました。 そうしましたところ正常に帳票フォームから詳細フォームを閲覧できました。 ありがとうございます! マクロの方ですが SysCmd(10,2,"検索一覧(利用者名)")<>0 SysCmd(10,2,"検索一覧(利用者名)")=0 ""この間は帳票フォーム名でよろしかったですかね? Where条件式にも条件にも帳票フォームの名前を入れてあります。 よく見たところ SysCmd(10,2,"検索一覧([利用者名])")<>0 SysCmd(10,2,"検索一覧([利用者名])")=0 余計な[ ]があったので取ってみても同じエラーでした。 ""もしっかり使っているのですが、同じエラーが出てきます。 ちなみに条件のみ"詳細情報(利用者名)"や、Where条件式のみ、条件とWhere条件式でも同じエラーになりました。 ためしに""を外してみましたが同じエラーになりました。 venzouさんの方ではしっかり動きがあるようなので 自分の方で決定的なミスがあるのですが・・・(汗 補足は週末を挟んでしまい申し訳ありませんでした。