VBA ユーザーフォームを速く開く方法について
現在Excel2000を使用しています。
VBAにてユーザーフォーム1と2を作成して、ユーザーフォーム1のコマンドボタンを押すと
userform2.showが実行されてユーザーフォーム2が開きますが、フォーム2にはテキスト
ボックスなどが約400個程設置してあり、そのせいかフォーム2が開くのに約8~10秒程かかり
ます。
そこでそのフォームを速く開きたいのですが、(1秒~2秒程で)どうしたら速く開くでしょうか?
Application.DisplayFullScreen = Falseなどを使用しても余り効果がありません。
パソコン自体の処理速度もあると思いますが、できるだけ速くしたいです。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
コントロール数の多さに加え、そのひとつひとつに表示切替のようなイベントプロシージャを
書いているのなら、「遅くなる」のは当たり前です。起動速度を改善したいのなら、
そちらを何とかすべきだと思いますよ。たとえば、
1. タブストリップコントロール等を用いて TextBox コントロールを使いまわす
ページの切り替え時に値を入れ替える処理を行います。
2. ユーザーフォームはあくまでインターフェースとし、核となる処理は標準
モジュールに書く。結果、ユーザーフォームのメモリ使用量は減り、起動は
早くなります。
など。
この回答への補足
返答ありがとうございます。
1.については値を入れ替える処理を行うと一度に見れなくなってしまうのでできれば避けたいです。
2.についてはほぼ全てのイベントプロシージャは標準モジュールに書いてあり、ユーザーフォームはインターフェースとして使用しています。
TEXT BOXのひとつひとつにイベントプロシージャを書いているわけではなくFrameでテキストボックスを20個単位くらいでくくり、そのうちのひとつのテキストボックスでkey downすると次のFrameが表示されるようにしてあります。(Visible=True)
なのでユーザーフォームにはサブの呼び出しと上記のFrameの表示の程度のプロシージャなのですがどうでしょうか?
No.4
- 回答日時:
メモリへ読み込みのみ表示はしない
Load UserForm1
フォームの表示
UserForm1.Show
フォームの非表示
UserForm1.Hide
メモリから削除
Unload UserForm1
ファイルを開いた時に
Loadでメモリにフォームを読み込んでおいて
必要な時にShowでフォームを表示
Hideでフォームを閉じる
ファイルを閉じる時に
Unloadでメモリから削除する
参考まで
No.2
- 回答日時:
リストビューを使うのは駄目でしょうか?
リストビュー
追加ボタン、削除ボタン、編集ボタン等と
いくつかのテキストボックス
で複数行の入力をするとか。
(1列であればリストボックスで同様な感じで)
参考
ListViewコントロールの使い方
http://officetanaka.net/excel/vba/listview/index …
この回答への補足
このやり方であれば処理は早そうですね!
リストボックスを使用する所には気付きませんでした。
しかし今かなりの量のマクロをuserform2で使用している為、リストボックスを使用する方法にすると
また1から作り直さないといけない部分があるので、できたらやはり今のまま高速化したいです。。。
No.1
- 回答日時:
>はテキストボックスなどが約400個程
そんなにテキストボックスがあって、一気にすべてユーザが入力するということなのでしょうか?
(200個ほど入力して、誤って画面を閉じちゃったりしたら全てやり直し?)
別のコントロールや、複数の段階に分けて入力するということが可能か検討してみてはどうでしょうか?
この回答への補足
ユーザーは全て入力する訳ではありません。
テキストボックスは多く設置してありますが、例えばテキストボックス1でkey downしたらテキストボックス2が表示されるような感じで最初から全て表示されてはいません。
あとユーザーではフォーム2のコマンドボタンの閉じるを押さないと、フォームを閉じられないように右上の×ボタンは非表示にしてあります。コマンドボタンの閉じるを押すと入力した内容はエクセルシートに全て保存されるマクロにしてあります。
できれば複数の段階に分けずにに一つのフォームで行った方が作業効率が良いのでそうしたいのですが、
やはり難しいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) MSaccessのレポートを開く 2 2022/09/01 13:16
- Excel(エクセル) vba フォーム軽量化 1 2022/09/07 18:59
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセル UserForm 呼び出しでフリーズしてしまいます
その他(Microsoft Office)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
-
4
ExcelVBA コントロール数が多くてユーザーフォームが重い
その他(Microsoft Office)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
7
DATE型変数を初期化する方法
Visual Basic(VBA)
-
8
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
9
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
10
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
11
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
12
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
13
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
14
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
15
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
16
フレーム内に移動したい
Visual Basic(VBA)
-
17
ラベル内の文字(Caption)を縦表示にする方法
Visual Basic(VBA)
-
18
ListViewで複数選択された項目を一度に削除する方法
Visual Basic(VBA)
-
19
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
20
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
【VBAユーザーフォームで閉じる...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォーム上に現在日時...
-
'ユーザーフォーム右上隅の[×...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームのコピー?
-
ユーザーフォームのテキストボ...
-
MSGBOXのフォント大きさ変更
-
Hideについて(.NET)
-
VBAでユーザーフォームを再表示...
-
エクセルVBA フォーム上でOnkey...
-
ACCESSのフォーム、開くんです...
-
エクセルのフォームをマクロで...
-
Excelにて、ユーザーフォームで...
-
クリックイベントなのに、2回ク...
-
C#で起動時のフォームを非表示...
-
アクセス2013 フォームが...
-
Form_Load と Form_Activate の...
-
フォームウィンドウを最前面に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームのテキストボ...
-
【VBAユーザーフォームで閉じる...
-
モーダルフォームとモードレス...
-
VBAでユーザーフォームを再表示...
-
エクセルVBAのフォームを最...
-
MSGBOXのフォント大きさ変更
-
Form_Load と Form_Activate の...
-
ユーザーフォーム上に現在日時...
-
Excelにて、ユーザーフォームで...
-
Hideについて(.NET)
-
フォームウィンドウを最前面に...
-
コントロールの存在確認
-
VBA(エクセル)のユーザー...
-
'ユーザーフォーム右上隅の[×...
-
エクセルVBA フォーム上でOnkey...
-
ブックをCloseまたはQuitで閉じ...
おすすめ情報