No.4ベストアンサー
- 回答日時:
蛇足ですが、
フォームロード時に重い処理をすると、
応答がないように見えユーザが不信に思うので~(^^;
重い処理をしてもフォームは表示するサンプルです。
空のフォームモジュールを1つ、標準モジュールを2つ用意し、
下のサンプルを貼り付けて使って下さい。
「プロジェクト」→「~のプロパティ」→「スタートアップの設定」
にSub Mainを設定するのを忘れずに。
--------------------------------------------------------------------------
フォームモジュール Form1.bas
--------------------------------------------------------------------------
Private Sub Form_Load()
Dim i As Long
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "Form_Load start"
Do Until i = 10000000
i = i + 1
If i Mod 100000 = 0 Then
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "Form_Load " & i
End If
Loop
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "Form_Load ended"
End Sub
--------------------------------------------------------------------------
標準モジュール Module1.bas
--------------------------------------------------------------------------
Option Explicit
Public Sub Main()
Dim lngFromsCount As Long
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "Main start"
lngFromsCount = VB.Forms.Count
Call Form1.Show
'フォーム1がロードするまで待ち合わせ(必要ないかも)
'Do Until VB.Forms.Count = lngFromsCount + 1: Loop
Call Module1.test(Form1)
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "Main ended"
End Sub
Public Sub test(Optional ByRef frmCallFrom As Form)
Dim i As Long
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "test start"
i = 0
'呼出元がフォームの場合再描画し、フォーム以外の場合再描画しない。
If Not frmCallFrom Is Nothing Then
Do Until i = 10000000
i = i + 1
If i Mod 100000 = 0 Then
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "test " & i
Call frmCallFrom.Refresh '呼出元フォームの再描画
Call VBA.Interaction.DoEvents 'フォーム1を操作可能状態にする。
End If
Loop
Else
Do Until i = 10000000
i = i + 1
If i Mod 100000 = 0 Then
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "test " & i
Call VBA.Interaction.DoEvents 'フォーム1を操作可能状態にする。
End If
Loop
End If
putlog Format(Now, "yyyy/mm/dd hh:mm:ss") & "test ended"
End Sub
--------------------------------------------------------------------------
標準モジュール Module2.bas
--------------------------------------------------------------------------
Option Explicit
Public Sub putlog(strState As String)
Dim intFileNumber As Integer
Const LOG_FILE_NAME = "c:\test.log"
intFileNumber = FreeFile
Open LOG_FILE_NAME For Append As #intFileNumber
Print #intFileNumber, strState
Close #intFileNumber
End Sub
No.3
- 回答日時:
Form_Loadイベント内に記述するだけでよいかと思います。
Form_Load
省略
Call test
End Sub
あるいは標準モジュールから呼び出す方法もあります。
1.プロジェクトに標準モジュールを追加する。
2.プロジェクトのプロパティを開き「スタートアップの設定」に「Sub Main」を選択する。
3.標準モジュール内で以下のように記述する
Sub Main()
'' フォームの呼び出し
Load Frm1
'' test関数呼び出し
Call test
End Sub
こうすれば「Sub Main関数」が各処理を順番に行ってくれます。
No.2
- 回答日時:
こんにちは。
maruru01です。タイマーコントロールを使用する方法もあります。
例えば、フォーム上にTimer1という名前のタイマーコントロールを置き、Intervalプロパティを適当な値(1秒なら1000)に設定しておきます。
そして、Timerイベントの一番最初に、
Me.Timer1.Interval = 0
としておけば、イベントは1度しか発生しません。
上記コードの後に、そのtestというプロシージャを実行するコードを記述すればいいわけです。
No.1
- 回答日時:
次に Formが アクティブになるのでしたら、
そこに記述すればいいですよ。
ロードの時に、フラグをつくり、オフにしておいて、
アクティブで 一度処理したら、オンにし、
オンだったら処理しないというふうにすれば
いいかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
VBでフォームのイメージを印...
-
VBAでユーザーフォームを再表示...
-
コントロールの存在確認
-
C#で起動時のフォームを非表示...
-
Access VBA コントロールの参照...
-
指定の動作中ユーザーフォーム...
-
Excelにて、ユーザーフォームで...
-
Excelのユーザーフォームのテキ...
-
ExcelVBAのユーザーフォームの...
-
VB.NETでフォームロード中のエ...
-
最小化最大化のボタンの表示を...
-
(Excel+VBA)ユーザーフォームの...
-
VB6 自分自身のフォームが...
-
任意のフォームが表示されてい...
-
なぜRecalcではだめなのか?
-
Form_Load と Form_Activate の...
-
ユーザーフォーム上に現在日時...
-
C#で3つのプログラムができま...
-
[VB6] フォームを閉じる方法に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
エクセルVBAのフォームを最...
-
クリックイベントなのに、2回ク...
-
VBAでユーザーフォームを再表示...
-
Form_Load と Form_Activate の...
-
Microsoft Formsの「個人情報や...
-
ACCESSのフォーム、開くんです...
-
'ユーザーフォーム右上隅の[×...
-
フォームウィンドウを最前面に...
-
Hideについて(.NET)
-
モーダルフォームとモードレス...
-
ユーザーフォーム上に現在日時...
-
MSGBOXのフォント大きさ変更
-
Excelにて、ユーザーフォームで...
-
コントロールの存在確認
-
ユーザーフォームのラベルに時...
-
VBA(エクセル)のユーザー...
-
エクセルVBA フォーム上でOnkey...
おすすめ情報