- ベストアンサー
VBAを使用してフォームの高さを設定する方法
- Access VBAを使用してフォームの高さを変更する方法について教えてください。
- フォームの上に設置されたサブフォームの高さをVBAで設定した後、フォームを閉じて再度開いても、設定した高さが保存されません。
- サブフォームの高さを保存するためにはどうすればよいでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 すみません、記憶に頼って動作確認を怠っていました。 No.1の方法では、保存されないことを確認しました。 ご指摘ありがとうございます。 お詫びの上、別案を提示します。 (とりあえず、概略のみを提示しますが、必要であれば コードも作成します) この方法であれば、VBAのソースコードを削除して、 デザインビューに切り替えることもできないMDEファイル であっても適用可能です。 【概要】 ・サブフォームの高さを、新設したテーブルに記録 ・フォームを開くときにその値を取得し、サブフォームの 高さに適用 <参考(以前のQ&A)> http://okwave.jp/qa/q6814037.html 【手順の概略】 1)新規テーブルを作成 <フィールド構成の一例> 『フォーム名』『コントロール名』『プロパティ名』『値』 (ご質問のフォーム以外でも同様に、サブフォーム等 の高さや幅を変えることがある場合を想定) 2)フォームの『開くとき』イベントで、上記テーブルの値を DLookupなどで取得し、サブフォームの高さに適用 (DLookup関数の第3引数にフォーム名などを指定して、 必要な設定値を取得) ・・・以上です。 大変失礼致しました。
その他の回答 (4)
- piroin654
- ベストアンサー率75% (692/917)
No2、No3です。質問のプロパティはデザインビューで 設定する必要があります。したがってNo2のコードの 最初で、 DoCmd.OpenForm Me.Name, acDesign, , , , acHidden として acDesign すなわちデザインビューで開き、 その後、プロパティを設定しなおして保存して閉じ、 DoCmd.OpenForm Form_フォーム1.Name のようにして開き、設定を確認します。 その後、フォームを閉じ、再び開くと 閉じる前に設定したサブフォームの高さが 維持されている、ということです。
お礼
回答ありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
No2です。 書き忘れましたが、No2のあと一旦フォームを閉じて 再び開くと、閉じる前に設定したサブフォームの 高さで開かれます。
お礼
回答ありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
フォームを閉じて、閉じる前に設定した高さで再び開く ということで回答します。 コード中の Dim a As Long はクリックイベントの外に以下のように設定します。 なお、"サブフォーム"という名前はサブフォームを 表示するコントロール名で初期値は"埋め込み0"の ような名前です。したがって名前を変更して"サブフォーム" というようにサブフォーム表示コントロール名が変更 されているものとします。 また、メインフォームの名前は"フォーム1"としています。 もし、メインフォーム名が"ABCメインフォーム"というような ものであれば、以下のコードの中の"メインフォーム1"を "ABCメインフォーム"に置き換えてください。 以下のコードで少し特殊なのは、デザインビューにしたときに そのメインフォームの名前の取得はコード表のプロジェクト で表示されている名前を使うというところです。 Option Compare Database Option Explicit Dim a As Long Private Sub コマンド1_Click() a = Me.txt_高さ.Value DoCmd.OpenForm Me.Name, acDesign, , , , acHidden Form_フォーム1.Controls("サブフォーム").Height = a DoCmd.Save acForm, Form_フォーム1.Name DoCmd.Close acForm, Form_フォーム1.Name DoCmd.OpenForm Form_フォーム1.Name End Sub 以上、わからないところがあれば補足してください。
お礼
回答ありがとうございました。
- DexMachina
- ベストアンサー率73% (1287/1744)
> CTRL+Sを押して、バツボタンでフォームを閉じて、 Officeでの「Ctrl+S」のショートカットキーは、 ExcelやWordでは「ファイル(ブック/ドキュメント)の保存」ですが、 Accessの場合は、「レコードの保存」 となっていて、このショートカットキーではフォームやテーブルなどの デザイン変更を保存することはできません。 ※但し、AccessでもVisual Basic Editor(VBE)の画面では、 「Ctrl+S」でフォームが保存される仕様になっています。 フォームやテーブル等をキーボード操作で保存する場合は、 「Alt+Fを同時押し」した後、「S」を押して下さい(=上書保存)。 (Accessでは、フォームやテーブルのデザインビューでこのショート カットキーを使用した場合、そのMDBファイル全体ではなく、 現在アクティブにしているAccessObject(→フォームやテーブル 等の総称)だけが保存されます) また、サブフォームの高さを設定すると同時に保存もVBAで行う 場合は、高さを設定した後に以下のコードを記述すればOkです: DoCmd.Save または DoCmd.Save acForm, Me.Name なお、以下のような記述をすれば、コードを記述したのとは別の AccessObjectを上書保存することも可能です。 (詳しくはヘルプを参照下さい) DoCmd.Save acTable, "テーブル1" (「テーブル1」という名前のテーブルを上書保存する場合の例) ・・・以上、参考まで。
お礼
回答ありがとうございました。
お礼
回答ありがとうございました。