
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
アクセスVBAのMe!と[ ]
Access(アクセス)
-
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
-
4
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
5
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
6
ACCESSのクエリで抽出条件「または」は9個までしかかけませんよね…
Access(アクセス)
-
7
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
8
アクセスのマクロ
Visual Basic(VBA)
-
9
(ACCESS)条件に応じて、テキストボックスを表示・非表示設定
その他(データベース)
-
10
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
11
「フォームを作成できませんでした」
Access(アクセス)
-
12
ACCESS VBA レポートプレビューを一定時間が経過後自動的に閉じるようにする方法は?
Visual Basic(VBA)
-
13
Accessのクエリで、replace関数を使い、データの中にある”をブランクに置き換えたいのですが
Access(アクセス)
-
14
アクセスでテーブルの変更内容をフォームに反映させるには?
その他(データベース)
-
15
Accessのレポートでマイナスのみ赤くするには?
Access(アクセス)
-
16
Access:クエリーにて集計後に文字列結合したい。
その他(データベース)
-
17
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
18
2つ目のレコードの値を取得するには?
Access(アクセス)
-
19
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
20
Access サブフォームでの選択行の取得
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ユーザーフォーム上に現在日時...
-
クリックイベントなのに、2回ク...
-
Form_Load と Form_Activate の...
-
Microsoft Formsの「個人情報や...
-
VB.NETでフォームロード中のエ...
-
VBAでユーザーフォームを再表示...
-
テキストボックス入力データの...
-
C#で起動時のフォームを非表示...
-
ExcelVBAのユーザーフォームの...
-
フォームのテキストボックスな...
-
VBAで画像を表示する方法
-
Accessで、一つのフォーム画面...
-
【VBAユーザーフォームで閉じる...
-
現在開いている全てのフォーム...
-
VBのフォームをスクロールさせ...
-
ユーザーフォームのラベルに時...
-
VBAのテキストフォームの折り返...
-
VB6でMDIフォームを使用してい...
-
エクセルのチェックボックスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Microsoft Formsの「個人情報や...
-
Form_Load と Form_Activate の...
-
VBAでユーザーフォームを再表示...
-
クリックイベントなのに、2回ク...
-
ユーザーフォーム上に現在日時...
-
テキストボックス入力データの...
-
VBAのテキストフォームの折り返...
-
ACCESSのフォーム、開くんです...
-
Hideについて(.NET)
-
ユーザーフォームのテキストボ...
-
エクセルVBAのフォームを最...
-
モーダルフォームとモードレス...
-
EXCEL VBA ユーザーフォームの...
-
フォームのテキストボックスな...
-
コントロールの存在確認
-
パソコンの画面に合わせてユー...
-
フォームウィンドウを最前面に...
-
Accessで、一つのフォーム画面...
おすすめ情報