
ACCESS VBA の初心者です。
前に進まず困っておりまして申し訳ありませんが教えてください。
フォーム1にボタンをつけそのボタンを押すとフォーム2に画面遷移するように、作っています。
フォーム2に画面遷移した場合、フォーム1は不要になるので、画面遷移と同時にフォーム1を閉じたいのですが、うまく行きません。
docmd.close
と言う命令を使うとフォーム1のボタンを押すと画面遷移先のフォーム2の方が一瞬表示されてすぐに閉じてしまいます。
どうしたら、フォーム2が表示されてフォーム1が同時に閉じる事ができるでしょうか?
No.2ベストアンサー
- 回答日時:
下記で、問題なくフォーム1から、フォーム2を開き、
フォーム1を閉じます。(Access2000で確認しました)
取り合えず、下記の最小限のフォームで、動作確認してみて下さい。
フォーム1、コマンドボタン1個
----フォーム1の全コード----
Option Compare Database
Option Explicit
Private Sub コマンド0_Click()
DoCmd.OpenForm "フォーム2"
DoCmd.Close acForm, "フォーム1"
End Sub
---------------------------
フォーム2は空のフォーム
---------------------------------------------------------
>何がいけないのでしょうか・・・。
推測ですが、フォーム1の「読み込み解除時」のイベントが怪しいかも。
このイベントで、閉じる事をキャンセル出来ます。
その他の原因については、現時点では思いつきません。(^^;
もう少し詳しい情報を頂けたら、何か分かるかも・・・
---------------------------------------------------------
原因を特定するためのアドバイス(その1)
・On Error Resume Next は使わない(もし使っていれば)
・ブレークポイントを設定する(F9)
・ステップ実行で1行ずつ実行する(F8)
---------------------------------------------------------
原因を特定するためのアドバイス(その2)
まず、フォームのバックアップを取る。(コピーして貼り付け)
関係無いと思われる部分から、ソースを少しずつ削除する。
問題のボタンと、そのイベントプロシージャは残しますが、
その他のコントロールや、イベントプロシージャは削除していきます。
少し削除して、動作確認。少し削除して、動作確認。・・・
これを不具合がなくなるまで、繰り返します。
フォーム2に関しても、不要な部分を削除していきます。
不具合がなくなれば、その直前に削除した部分が怪しい。
No.3
- 回答日時:
チクッと同じような現象を再現してみました。
フォーム1:
Option Compare Database
Option Explicit
Private Sub コマンド0_Click()
On Error GoTo err_コマンド0
DoCmd.OpenForm "フォーム2"
DoCmd.Close acForm, "フォーム1"
Exit_コマンド0_Click:
Exit Sub
err_コマンド0:
Resume Exit_コマンド0_Click
End Sub
フォーム2:
Option Compare Database
Option Explicit
コード自体には問題はありません。
しかし、"フォーム2"の表示に失敗し"フォーム1"も閉じられないです。
原因は、DoCmd.OpenForm "フォーム2"でエラーが発生しているからです。
この場合、エラートラップの働きでDoCmd.Close acForm, "フォーム1"はスキップされます。
理屈の上では、これが一つの原因です。
理屈の上では、フォームの誤動作が二つ目の原因です。
肝心のコード全体を示されないと、この推測が当をえているのかも疑問。
なお、フォームの誤動作は、プロシージャの移動で発生します。
あちこちからプロシージャの切り貼りを繰り返せば、動作は保証されません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
このQ&Aを見た人はこんなQ&Aも見ています
-
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
-
4
ACCESSのクエリで抽出条件「または」は9個までしかかけませんよね…
Access(アクセス)
-
5
アクセスのマクロ
Visual Basic(VBA)
-
6
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
7
アクセスVBAのMe!と[ ]
Access(アクセス)
-
8
Access サブフォームでの選択行の取得
その他(データベース)
-
9
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
10
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
11
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
12
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
13
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
14
アクセスでテーブルの変更内容をフォームに反映させるには?
その他(データベース)
-
15
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
16
2つ目のレコードの値を取得するには?
Access(アクセス)
-
17
Access:クエリーにて集計後に文字列結合したい。
その他(データベース)
-
18
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
19
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
20
アクセス特有の書き方?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
VBA(エクセル)のユーザー...
-
ExcelVBAのユーザーフォームの...
-
VBAでユーザーフォームを再表示...
-
C# 2010 printPreviewDialogの...
-
Access すべてのフォームを開く
-
VBのフォームをスクロールさせ...
-
ACCESSのフォーム、開くんです...
-
VB6(SP5) 無限ループ
-
二つのフォームを一緒に移動
-
Form_Load と Form_Activate の...
-
Ctrl+F4を押してもフォームが...
-
VBレイアウトの落とし穴?
-
モードレスでユーザーフォーム...
-
[Access]あるフォームのクラス...
-
me.caption
-
文法 何がおかしい? VBAです
-
エクセルのVBAでユーザーフォー...
-
フォームを画面の下側ぴったり...
-
フォームウィンドウを最前面に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
VBAでユーザーフォームを再表示...
-
Form_Load と Form_Activate の...
-
ユーザーフォームのテキストボ...
-
Microsoft Formsの「個人情報や...
-
モーダルフォームとモードレス...
-
クリックイベントなのに、2回ク...
-
ACCESSのフォーム、開くんです...
-
VBA(エクセル)のユーザー...
-
Hideについて(.NET)
-
エクセルVBAのフォームを最...
-
ユーザーフォーム上に現在日時...
-
VB.NETでフォームロード中のエ...
-
(Excel+VBA)ユーザーフォームの...
-
フォームウィンドウを最前面に...
-
アクセス2013 フォームが...
-
コントロールの存在確認
-
Access VBA コントロールの参照...
-
ブックをCloseまたはQuitで閉じ...
おすすめ情報