
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
Visual Basic(VBA)
-
ExcelVBA コントロール数が多くてユーザーフォームが重い
その他(Microsoft Office)
-
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
8
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
9
エクセル UserForm 呼び出しでフリーズしてしまいます
その他(Microsoft Office)
-
10
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
11
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
12
ExcelVBAでListViewが使用できない
Visual Basic(VBA)
-
13
UserForm1.Showでエラーになります。
工学
-
14
Vba ListViewの行挿入に関して教えてください
Visual Basic(VBA)
-
15
excelのInitializeイベントとActivateイベントについて
Excel(エクセル)
-
16
vba listviewにおけるtextのAlingmentを中央にしたい
Excel(エクセル)
-
17
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
18
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
19
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
-
20
vba userFormのSubを標準モジュールから呼び出す方法を教えてください
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームを表示中にシ...
-
Form_Load と Form_Activate の...
-
VBA コンボボックスとテキスト...
-
エクセルのVBAでユーザーフォー...
-
(Excel+VBA)ユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
【Excel VBA】ユーザフォームを...
-
テキストボックス入力データの...
-
VBAでユーザーフォームを再表示...
-
テキストボックスでの右クリッ...
-
[Access]あるフォームのクラス...
-
ACCESSのフォーム、開くんです...
-
【VBAユーザーフォームで閉じる...
-
Accessで、一つのフォーム画面...
-
ユーザーフォーム上に現在日時...
-
続・タイマーとShowdialog(VB2...
-
Microsoft Formsの「個人情報や...
-
C#で起動時のフォームを非表示...
-
Excel VBA ユーザーフォーム 複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
VBAでユーザーフォームを再表示...
-
Form_Load と Form_Activate の...
-
ユーザーフォームのテキストボ...
-
Microsoft Formsの「個人情報や...
-
モーダルフォームとモードレス...
-
クリックイベントなのに、2回ク...
-
ACCESSのフォーム、開くんです...
-
VBA(エクセル)のユーザー...
-
Hideについて(.NET)
-
エクセルVBAのフォームを最...
-
ユーザーフォーム上に現在日時...
-
VB.NETでフォームロード中のエ...
-
(Excel+VBA)ユーザーフォームの...
-
フォームウィンドウを最前面に...
-
アクセス2013 フォームが...
-
コントロールの存在確認
-
Access VBA コントロールの参照...
-
ブックをCloseまたはQuitで閉じ...
おすすめ情報