Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : その他)
ユーザーホームの呼び出しが先行してしまう
投稿日時: 22/12/20 15:05:32
投稿者: o_taroh

下記のプロシージャの実行でUserForm2.Showが先行してしまいます、なぜでしょう?
ちなみに、Userform2.Showにブレークポイントを設定すると正常な動作になります、何かプロパティの設定でもあるのでしょうか。
よろしくお願いします。
 
 Application.EnableEvents = False
    trB = Range("B4").End(xlDown).Row
    Nm = Cells(r, 2) & "様"
    For rd = 4 To trB
       If Cells(rd, 2) = Nm Then
           Cells(r + 2, 1) = rd
           Range(Cells(rd, 2), Cells(rd, 19)).Select
           Selection.Copy
           Range(Cells(trB + 2, 2), Cells(trB + 2, 2)).Select
           Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
            UserForm2.TextBox3 = rd
            UserForm2.TextBox2 = Nm
            UserForm2.Show
            Exit For
        End If
    Next rd
    Module1.FuncSet
  Application.EnableEvents = True

回答
投稿日時: 22/12/20 16:20:06
投稿者: WinArrow

 
UserForm2 モジュールの中には、
UserForm_Initializeプロシジャはありますか?
 
ステップ実行してみると、分かりますが、
 UserForm2.TextBox3 = rd
で、Userform2_Initialize
が実行されます。
 
Userform2_Initialize、は、
ユーザーフォームを初期化するプロシジャです。
最初に、メモリ内にユーザーフォームを読み込む必要があります。
その後、
 UserForm2.TextBox3 = rd
で、コンロロールに値をセットすることになります。

回答
投稿日時: 22/12/20 16:23:27
投稿者: WinArrow

ところで、
ユー―ザーフォームを閉じると
Eit For
でループを抜けてしまいますが、
これでよいのでしょうか?
ループしている意味がありません。

回答
投稿日時: 22/12/20 20:04:18
投稿者: WinArrow

掲示のコードは、かなり、省略されて掲示てあります。
 
そのため
変数が、どおでどのように記述されているか分かりいませんが、
 
Public rd As Long
Public Nm As String
 
とように定義されているならば

引用:
UserForm2.TextBox3 = rd
            UserForm2.TextBox2 = Nm

の部分を
UserForm_Initializeプロシジャの中に記述することができます。

トピックに返信