
縦に長いフォームを作っているのですがフォームビューをするとフォームがやや下の方の画面で開けられてしまいます。
原因はフォームオープン時に対象レコードをテキストボックスに入れたり、プルダウンボックスにレコードをセットしたりしているからだと思います。(全てコーディングで)
どうすればスクロールバーを一番上まで戻すことができますか?元からスクロールバーを移動させずにレコードをセットする方法でもかまいません。
それともう一つ、フォームのプルダウンボックスに、プロパティの値集合ソースからSQLをセットしたりする方法がありますが、VBAのグローバル変数をWHERE句に使用したい場合はこの方法は使えませんよね?
最後にもう一つクエリはVBAのグローバル変数使えませんよね?
フォームのコントロールから値を取得することもできませんよね?
No.1ベストアンサー
- 回答日時:
ACCESSをお使いになっていると想定して返答させて頂きますね。
(クエリ等の話が出ているので)
フォームのスクロールは
VBAのコーディングで値をセットしているならば
それらが終わった後で
SendKeys "{PGUP}"
を実行してPageUpキーを送信してやるのが手っ取り早いかと。
クエリがフォームのコントロールの値を取得する事は可能です。
[Forms]![フォーム名]![コントロール名]
の形式でクエリに埋め込んでみてください。
ただし、参照先のフォームはフォームビューで
開かれている必要があります。
VBAのグローバル変数はクエリから直接は参照できませんので
VBAのコーディングでグローバル変数を使ってSQLの文字列を構築し
Currentdb.QueryDefs("クエリ名").SQL = "作成したSQL"
でクエリのSQLを書き換えるという方法があります。
この回答への補足
SendKeys "{PGUP}"の方法ダメでした。順番的に一番最後に処理させているのですが、デバッグモードで調べてもピクリとも反応しませんでした。
なぜできないのか原因はわかりませんが、とりあえず他の方法で対処できました。
[Forms]![フォーム名]![コントロール名]の方法は利用してみます。
フォーム中のコントロールの埋め込み式(値集合ソース)で利用して、別のフォームのコントロール値を取得して現在のフォームのプルダウンボックスのSQLにセットできそうなので今度やってみます。
Currentdb.QueryDefs("クエリ名").SQL = "作成したSQL"この方法は今のところ使うところがないので頭の片隅に置いておきます。
No.2
- 回答日時:
対処できたとの事ですので補足になりますが
SendKeysステートメントはあくまで単純にキー操作を
実行するだけの処理ですので、タイミングがずれると
意図した通りに動いてくれない事はあります。
キーボードからの操作を受け付けないタイミングで実行されて
動かない事も考えられますし、デバッグモードで実行しても
通常実行時と同じ動きにはなりません。
(デバッグモードの画面に対してキー操作した事になる)
手っ取り早い方法という事で挙げてみましたが、あまり安定したやり方とは言えないので
フォーム上部の方にあるコントロールに対して
[コントロール名].SetFocus
でフォーカスを移した方が良かったかもしれませんね。
ただこれだとコントロールの位置に依存しますし
画面の最上部までスクロールする保証はなかったものですから。
ありがとうございます。
実は私もその方法でしました。フォームの一番上に可視のテキストボックス(後で不可視にする)を貼り付けて、そこにフォーカスを一旦移動させてから、その少し下の目的のコントロールにフォーカスを移動させることで対応しました。
SendKeysステートメント自体初めて見たので参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- PDF PDFのテキストを追加機能 1 2022/06/18 12:45
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
このQ&Aを見た人はこんなQ&Aも見ています
-
スクロールバーをVBAで操作したい
Access(アクセス)
-
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
アクセスVBA フォームのスクロールバーを動かす。
Visual Basic(VBA)
-
-
4
TextBoxの最下行を表示しておきたい
Visual Basic(VBA)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
ユーザーフォームのスクロールについて(エクセル2000VBA)
Excel(エクセル)
-
7
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
8
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
9
excel ユーザーフォームのリストボックスのスクロールバーからフォーカスを移動したい。
Excel(エクセル)
-
10
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
-
11
パソコンの画面に合わせてユーザーフォームを表示させたい
Visual Basic(VBA)
-
12
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
13
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
14
アクセスで サブフォームの表示について
その他(データベース)
-
15
どこにもフォーカスを当てたくない
Access(アクセス)
-
16
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
17
現在アクティブなタブのページ名を取得したい
Access(アクセス)
-
18
Excel VBA のマルチページ
その他(Microsoft Office)
-
19
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
20
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PDFフォームに本日の日付を自動...
-
サブフォームの新規レコードに...
-
Accessでフォームから別フォー...
-
Googleフォーム・複数人の申し...
-
C# 別なフォームへ値を渡す (...
-
VBAでフォームのスクロールバー...
-
メッセージボックスの背景色
-
アクセスVBA フォームのス...
-
バイク王の買取り金額検索フォ...
-
VBAにてメッセージボックスを最...
-
VB.NET 親フォームから子フォー...
-
Accessでサブフォームの合計を...
-
子フォームから親フォームのオ...
-
フォームの左上のアイコンだけ...
-
accessで2つ以上のフォームを起...
-
WithEvents変数について
-
ACCESS 表形式フォームで1レ...
-
フォーム上の全てのコントロー...
-
フォームで複数のチェックボッ...
-
ExcelVBAでフォーム内でブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
VBA リストボックスをダブルク...
-
Accessでフォームから別フォー...
-
Googleフォーム・複数人の申し...
-
PDFフォームに本日の日付を自動...
-
サブフォームの新規レコードに...
-
ユーザーフォーム上にアイコン...
-
リストボックスの選択解除
-
アクセスVBA フォームのス...
-
VBプログラムの終了
-
Access 無操作の場合、自動で閉...
-
メインフォームからサブフォー...
-
フォーム上の全てのコントロー...
-
ExcelVBAでフォーム内でブック...
-
ExcelVBAでユーザーフォーム内...
-
サブフォームのイベント取得
-
dbOpenTableとdbOpenDynaset
-
VB.net(VB)で、フォームにExcel...
-
C# 別なフォームへ値を渡す (...
-
メッセージボックスの背景色
おすすめ情報