おしえてくださいm__m
AccessにてWindowを最小化した後に現在開いているフォームを開くVBAを
作成しようとしていますがうまくいきません。
現在はWindowを最小化した後一つのフォームを開くVBAは下記の通り作成しました
DoCmd.RunCommand acCmdAppMinimize
DoCmd.OpenForm "メインフォーム", acNormal
しかしながら現在開いているすべてのフォームをAccess Windowを最小化した後に
開くVBAはどのように記載すればいいでしょうか
皆さまのお知恵をかしてくださいm__m
No.2ベストアンサー
- 回答日時:
<回答>
抜粋>現在開いているフォームをポップアップで開く
フォームを開くではなく、現在開いているフォームに対し再度ポップアップで前面に
出したいということであれば、現在開いているフォームを順番にアクティブウィンド
化をしていき前面表示させます
以下、サンプルコード (スペル間違いがあるかも、その点は注意願います)
Dim intFrm As Integer
Dim strFrm As String
On Error Resume Next '*** エラー無効化
For intFrm = Forms.Count - 1 To 0 Step -1
strFrm = ""
strFrm = Forms(intFrm).Name
'-IF説明- strFrm <> "" : 万が一エラーが起きた場合 strFrm値は空白なので後続処理は動作せず、次のフォームに移るように
'-IF説明- strFrm <> Me.Name : 自分自身のフォームは何もしないようにする場合には必要
If strFrm <> "" And _
strFrm <> Me.Name Then
'--- 対応案1:アクティブ(再ポップアップ)化
DoCmd.SelectObject acForm, strFrm
'--- 対応案2:再表示
'DoCmd.Close acForm, strFrm
'DoCmd.OpenForm strFrm, acNormal, "", "", , acDialog
End If
Next
On Error GoTo 0 '*** エラー有効化
対応案2の再表示に関しては
フォームが開いているもの対し、再度開くというのは出来なかった気がします
そこから一旦クローズしてから開きなおす手法を取りますが、その場合、再表示のため
画面入力値が初期化されてしまう欠点があります
欠点回避には、また別の制御(作りこみ)が必要になってきます
以上でした
No.1
- 回答日時:
<抜粋>
現在開いているすべてのフォームをAccess Windowを最小化した後に開くVBA
<前提>
既に開いているフォームをAccessWindow最小化後に開くという意味(やりたい事)を、以下の様に判断、意味合いが違った場合、回答自体間違いになる点はご理解ください。
<やりたい事>
AccessWindowを最小化しても、すでに開いているフォームはAccessWindowの外でも表示させたい
<回答1>
フォーム自体に持っている、フォームプロパティにある「ポップアップ=はい」にしておく事で、やりたい事の実現が可能です
VBAで行うのではなく、初めからフォーム設定(設定保存)しておくことで
いつでもAccessWindowを最小化されても開いているフォームは前面表示されます
<回答1における注意点>
他のアプリ(エクセルやワード、メモ帳など)が動作している場合、AccessWindowを
最小化した際にフォーカスが他のアプリに行ってしまう事があります。
ここら辺は以下の調整が必要です
きちんとフォームの順番を決めておき、フォームプロパティにある「作業ウィンド
ウ固定をはい」にしておく、または、最小化後にフォーカスをフォームに割り当てる
※フォームプロパティとはフォームオブジェクトプロパティの事ではなく、
フォームデザインで開いた先のフォーム全体のプロパティのことです
以前、初心者QAで説明に苦労した記憶を思い出してしまった。
<回答2>
フォーム自体には記憶させず(ポップアップ=いいえ状態)、VBAで行う方法もありますが、かなりの労力が必要で手間がかかるので概要だけ記載しておきます(回答1が一番ラクです)
VBAサンプルコードを作成するには丸1日かかってしまうので概要だけ記載
(1).AccessWindowを最小化が動作する前に、まず既に開いているフォームが何か解る仕組みを設けなければならない
(1A).各フォームが開く際(オープン時イベントなど)に、テーブル等にフォームオブジェクト名を保存
(1B).各フォームが閉じられた際(クローズ時イベントなど)に、(1A)で作成したレコードを削除
(2).AccessWindowを最小化が動作後、既に開いているフォームを一旦デザインで開きなおす(開きなおす手法は(1A)で作成したテーブルを読込み実施する)
(3).デザインで開きなおしたフォームに対しフォームプロパティにある「ポップアップ」を「はい」にする。
(4).デザインで開きなおしたフォームに対し実行を行う
(5).各フォームが閉じる前に(クローズ時イベントなど)に、(3)の設定を元に戻す
(5A).閉じる前にデザインで開きなおす
(5B).デザインで開きなおしたフォームに対しフォームプロパティにある「ポップアップ」を「いいえ」にする。
(5C).デザインで開きなおしたフォームを閉じる
結局、上記方法もポップアップをはいに設定し保存しなおしてから実行する手法です
閉じられたときに、元に戻して保存という意味合いになります
この場合、既に開いているフォームが再度開きなおすという事で、引数は初期化される形になる問題点もあります
引数も引き継ぐ場合、またさらにどこかに記憶させておく必要がでてしまいます(テーブルなど)
以上でした。
この回答への補足
どうもご丁寧に回答をありがとうございます
このような質問をしたのはフォームだけを表示して利用しているAccessが
タスクバーのAccessのアイコンを押すとAccessのWindowが開いてしまいAccessの見栄えが悪くなってしまうため
どうにかならないかということで質問させていただきました。
そこで考えたのがタスクバーを押しAccessのWindowが開かれた後
フォームの中のボタンクリック時にAccess Windowの最小化 → 現在開いているフォームをポップアップ
で開くVBAがないか模索中です (フォームはポップアップ「はい」にしております)
現在開いているフォームをすべて「閉じる」VBAが
Dim intFrm As Integer
For intFrm = Forms.Count - 1 To 0 Step -1
DoCmd.Close acForm, Forms(intFrm).Name
Next
という形であるため 逆に現在開いているフォームを「開く」VBA
がないか模索中です どうか、お知恵をかして下さいm__m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Access(アクセス) Access DLookup vbaで条件を2件設定したい場合どうすればよいでですか? 現在 If( 1 2023/06/28 14:28
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Access(アクセス) Accessに関する質問です。 クエリーQ出勤 からフォームF出勤を作成 フォームは分割フォームで作 1 2023/05/26 08:57
- その他(SNS・コミュニケーションサービス) Yahoo知恵袋の登録番号の知り方について 2 2022/09/17 21:04
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォーム上に現在日時...
-
エクセルVBAのフォームを最...
-
ACCESSでストップウォッチの作成
-
VBAでユーザーフォームを再表示...
-
Form_Load と Form_Activate の...
-
ユーザーフォームのテキストボ...
-
フォームウィンドウを最前面に...
-
ブックをCloseまたはQuitで閉じ...
-
クリックイベントなのに、2回ク...
-
MSGBOXのフォント大きさ変更
-
C#で起動時のフォームを非表示...
-
ACCESSのフォーム、開くんです...
-
フォームの位置を取得したい
-
ユーザーフォームのラベルに時...
-
VB.NET/PictureBoxのサイズ
-
Excel VBAで別のブックからユ...
-
VBE ユーザーフォーム重複・空...
-
フォームを画面の下側ぴったり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
クリックイベントなのに、2回ク...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォーム上に現在日時...
-
Form_Load と Form_Activate の...
-
モーダルフォームとモードレス...
-
Excelにて、ユーザーフォームで...
-
VBAでユーザーフォームを再表示...
-
【VBAユーザーフォームで閉じる...
-
MSGBOXのフォント大きさ変更
-
VBA(エクセル)のユーザー...
-
Hideについて(.NET)
-
エクセルVBAのフォームを最...
-
コントロールの存在確認
-
ACCESSのフォーム、開くんです...
-
'ユーザーフォーム右上隅の[×...
-
フォームウィンドウを最前面に...
-
ユーザーフォームのラベルに時...
おすすめ情報