図のようにフォームの上にサブフォームを設置して、
コマンドボタンとテキストボックス(txt_高さ)を設置しました。
コードは、
Private Sub コマンド1_Click()
Me.サブフォーム.Height = Me.txt_高さ.Value
End Sub
です。
コマンドボタンを押すと、サブフォームの高さを設定する仕様なのですが、
サブフォームの高さを変化させて(例えば、2500twips)、
CTRL+Sを押して、バツボタンでフォームを閉じて、
再度フォームを開いても、2500twipsの高さではないです。
フォームを開いている最中に、VBAで変化させたサイズで保存して、
再度開いた時もその高さにしたいのですが、無理なのでしょうか?
ヘルプ(SubForm."Height/高さ" プロパティ)には
「値の取得および設定が可能です。」と書いてありますから
設定も可能なのでは?と思っています。
No.1
- 回答日時:
> 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」という名前のテーブルを上書保存する場合の例)
・・・以上、参考まで。
No.2
- 回答日時:
フォームを閉じて、閉じる前に設定した高さで再び開く
ということで回答します。
コード中の
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
以上、わからないところがあれば補足してください。
No.3
- 回答日時:
No2です。
書き忘れましたが、No2のあと一旦フォームを閉じて
再び開くと、閉じる前に設定したサブフォームの
高さで開かれます。
No.4
- 回答日時:
No2、No3です。
質問のプロパティはデザインビューで設定する必要があります。したがってNo2のコードの
最初で、
DoCmd.OpenForm Me.Name, acDesign, , , , acHidden
として acDesign すなわちデザインビューで開き、
その後、プロパティを設定しなおして保存して閉じ、
DoCmd.OpenForm Form_フォーム1.Name
のようにして開き、設定を確認します。
その後、フォームを閉じ、再び開くと
閉じる前に設定したサブフォームの高さが
維持されている、ということです。
No.5ベストアンサー
- 回答日時:
No.1です。
すみません、記憶に頼って動作確認を怠っていました。
No.1の方法では、保存されないことを確認しました。
ご指摘ありがとうございます。
お詫びの上、別案を提示します。
(とりあえず、概略のみを提示しますが、必要であれば
コードも作成します)
この方法であれば、VBAのソースコードを削除して、
デザインビューに切り替えることもできないMDEファイル
であっても適用可能です。
【概要】
・サブフォームの高さを、新設したテーブルに記録
・フォームを開くときにその値を取得し、サブフォームの
高さに適用
<参考(以前のQ&A)>
http://oshiete.goo.ne.jp/qa/6814037.html
【手順の概略】
1)新規テーブルを作成
<フィールド構成の一例>
『フォーム名』『コントロール名』『プロパティ名』『値』
(ご質問のフォーム以外でも同様に、サブフォーム等
の高さや幅を変えることがある場合を想定)
2)フォームの『開くとき』イベントで、上記テーブルの値を
DLookupなどで取得し、サブフォームの高さに適用
(DLookup関数の第3引数にフォーム名などを指定して、
必要な設定値を取得)
・・・以上です。
大変失礼致しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Access(アクセス) MSaccessのレポートを開く 2 2022/09/01 13:16
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Access サブフォームでの選択行の取得
その他(データベース)
-
フォームで入力しても反映されない
Access(アクセス)
-
コンボボックスにキー入力をさせない方法(ACCESS VBA)
その他(プログラミング・Web制作)
-
-
4
アクセスVBAのMe!と[ ]
Access(アクセス)
-
5
AccessのOLEオブジェクトについて
Access(アクセス)
-
6
ACCESSでラベルの余白と高さ、幅を設定する
Access(アクセス)
-
7
Access2002 フォームを閉じるたびに「このフォームの変更を保存しますか?」と表示される
その他(データベース)
-
8
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
9
Accessレポートのチェックボックスを大きくする方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Accessのサブフォームから値を...
-
Access 複数フォームを...
-
ACCSESS2013VBA フォームのレコ...
-
Access2000、これはいったい・...
-
サブフォームが見えなくなる。
-
Access2000 サブフォームのReco...
-
アクセスでサブフォームのレコ...
-
access2000のサブフォーム同士...
-
(ACCESS)条件に応じて、テキ...
-
レコードセットで得た結果をサ...
-
サブフォームでフィルタしたデ...
-
コンボボックスで選択実行後、...
-
access タブコントロールの使...
-
サブフォームのデータを保存す...
-
AccessのDoCmd.ApplyFilterの使...
-
初心者です。accessで請求書を...
-
accessのサブフォームの並び替...
-
ACCESS サブフォーム MAX関数...
-
Access 2010 分割フォームのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access 複数フォームを...
-
Access2000、これはいったい・...
-
ACCSESS2013VBA フォームのレコ...
-
Accessのサブフォームから値を...
-
access サブフォームにリストを...
-
(ACCESS)条件に応じて、テキ...
-
Accessで、一覧からクリックし...
-
Access2000 サブフォームのReco...
-
サブフォームが見えなくなる。
-
サブフォームでのダブルクリッ...
-
AccessのFormのみをスクリーン...
-
googleフォームでインストール...
-
2回目に画面のレコードセットの...
-
初心者です。accessで請求書を...
-
ACCESSでfilterとorderbyについて
-
ACCESSでサブフォームの...
-
アクセスで サブフォームの表...
-
レコードセットで得た結果をサ...
-
サブフォームのデータを保存す...
おすすめ情報