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