0

ユーザーフォームがあります。ユーザーフォームにはラベルがあります。

Userform_Initialize()イベントでは、次のコードを使用します。

x秒が経過した後にユーザーフォームを閉じる。

モジュールには、

sub KillForm()
Unload UserForm1
end sub

ここで、ボタンを押してユーザーフォームを開き、ワークシートをクリックして、ラベルの文字列strMessageと秒xをユーザーフォームに渡したいので、モジュールにサブを作成します。

Sub ShowMessage(strMessage As String, x As Integer)
UserForm1.Label1.Caption = strMessage
userform1.show
End Sub

ボタンのOn_Clickイベントでルーチンを呼び出します

ShowMessage "Hello World.", 3

アラス、それは動作しません。xはユーザーフォームで3ではなく、常に0です。

Userformモジュールとgeneralモジュールの上に整数としてPublicxを試しました。運がない。OnTime行でxを3などの数値に置き換えると、フォームはラベルのキャプションとしてstrMessageとともに表示され、静的時間の後に消えます。しかし、変数xを使用して時間を動的にしたいと思います。

だから:どうすればxの値をユーザーフォームとルーチンに渡すことができますか

Application.OnTime Now + TimeSerial(0, 0, x), "KillForm"

ありがとうAG

4

1 に答える 1

0

スプラッシュ画面の表示中にバックグラウンドで実行するために他の操作が必要ないと仮定するとShowMessage、次の方法で変更することもできます。

Sub ShowMessage(strMessage As String、intDisplayTime As Integer)
    Dim dblStartTime as Double

    UserForm1.Label1.Caption = strMessage
    UserForm1.Show

    dblStartTime=タイマー
    dblStartTime + intDisplayTime>=86400の場合
        dblStartTime = dblStartTime-86400
    終了する場合

    タイマー中-dblStartTime<intDisplayTime
        DoEvents
    ウェンド

    UserForm1をアンロードします    
サブ終了
于 2012-12-29T21:50:41.760 に答える