| 
    
     |  | ▼hint さん: コメント有難うございます。
 
 >Initializeで設定した値に戻したいのですが
 >モジュール変数を使えばいいでしょう。
 >
 >Dim labelText(1 To 5) As String
 >Private Sub UserForm_Initialize()
 >  Dim i As Long
 >  labelText(1) = "あああ"
 >  labelText(3) = "いいい"
 >  labelText(5) = "ううう"
 >  For i = 1 To 5 Step 2
 >    UserForm1.Controls("Label" & i).Caption = labelText(i)
 >  Next i
 >End Sub
 >labelTextを使って元に戻せばいいでしょう。
 
 Private Sub UserForm_Initialize()
 Dim labelText(1 To 5) As String
 Dim i As Long
 
 labelText(1) = "あああ"
 labelText(3) = "いいい"
 labelText(5) = "ううう"
 
 For i = 1 To 5 Step 2
 UserForm1.Controls("Label" & i).Caption = labelText(i)
 Next i
 End Sub
 
 ------------------------------------------------------------------------------
 Private Sub ListBox1_Change()
 
 
 Dim i As Variant
 Dim lab As Variant
 Dim labelText As String
 
 lab = Array("1", "3", "5")
 
 For Each i In lab
 
 With UserForm1.Controls("TextBox" & i)
 If .Value <> "" Then
 .Enabled = True
 UserForm1.Controls("Label" & i).Caption = labelText
 Else
 .Enabled = False
 UserForm1.Controls("Label" & i).Caption = Clear
 End If
 End With
 Next i
 End Sub
 
 としてみましたが、リストボックスの選択を変える(テキストボックス内の文字が変化する)とラベルの文字が消えてしまい、元に戻りませんでした。
 書き方が間違っていますでしょうか?
 ちなみに、
 lab = Array("1", "3", "5")
 としましたが、実際は("5", "6", "9")など、規則性が無いのですが、どうすればよいでしょうか?
 
 >ところで、
 >cap = UserForm1.Controls("label" & i).Caption
 >・・・
 > UserForm1.Controls("Label" & i).Caption = cap
 >としているから、
 >戻すにもなんにも、最初から少しも変わっていないわけですよね。
 >意味がわからないです。なにかのミスですか?
 >もう少し整理したほうがいいですよ。
 
 これについては、
 
 cap = UserForm1.Controls("label" & i).Caption
 で一旦"cap"にラベルの文字を入れて
 
 If .Value <> "" Then
 の時は"cap"の文字を表示して
 
 Elseの時はクリア
 
 という風にできるかなと思ったんですが、間違っていますでしょうか。
 
 ご教示どうぞよろしくお願いします。
 
 |  |