|    | 
     ▼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の時はクリア 
 
という風にできるかなと思ったんですが、間違っていますでしょうか。 
 
ご教示どうぞよろしくお願いします。 
 
 | 
     
    
   |