0
私はリストビューを持つユーザーフォームを持っています。このリストビューでは、1つの列がチェックボックスで定義されます。したがって、ユーザーが複数の行のチェックボックスをクリックすると、ラベルのキャプションに選択したIDを表示するとします(例: "You are selected: 848, 12133, 414"
VBAでラベルを動的に定義する方法は?
どうすればいいですか?
私はリストビューを持つユーザーフォームを持っています。このリストビューでは、1つの列がチェックボックスで定義されます。したがって、ユーザーが複数の行のチェックボックスをクリックすると、ラベルのキャプションに選択したIDを表示するとします(例: "You are selected: 848, 12133, 414"
VBAでラベルを動的に定義する方法は?
どうすればいいですか?
は編集:私はちょうどあなたがリストビューについて話していることを見た ...ここ
は ExcelForum上AlphaFrogから修正されたコードスニペットがされています。彼は何Private Sub Listview1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
Dim si As MSComctlLib.ListSubItem
For Each si In Item.ListSubItems
si.ForeColor = IIf(Item.Checked, vbBlue, vbBlack)
Next
End Sub
はFontcolourを変更でチェックボックス(Item.Checked
)のステータスによって異なります。
あなたが望む結果を得るために、以下の私のオリジナル返事のロジックを使用することができます。
オリジナルの返信:ここ
は3つのチェックボックス付きの例ですが、私は唯一のCheckBox1をのためのコードと同様に初期化を掲載する予定です。 Checkbox1_Clickのコードは、Checkbox2_ClickとCheckbox3_Clickに1対1で対応します。コンセプトの
Dim cnt As Integer
Dim checked() As Integer
Dim tmp As Integer
Private Sub CheckBox1_Click()
cnt = 0
ReDim checked(1 To 3)
tmp = 1
For i = 1 To 3
If UserForm1.Controls("Checkbox" & i).Value = True Then
checked(tmp) = i
cnt = cnt + 1
tmp = tmp + 1
End If
Next i
Select Case cnt
Case 0
Label1.Caption = ""
Case 1
Label1.Caption = "You have selected: " & UserForm1.Controls("CheckBox" & checked(tmp - 1)).Caption
Case Is > 1
Label1.Caption = "You have selected: " & UserForm1.Controls("CheckBox" & checked(1)).Caption
For t = 2 To tmp - 1
Label1.Caption = Label1.Caption & ", " & UserForm1.Controls("CheckBox" & checked(t)).Caption
Next t
End Select
End Sub
'same code here for Checkbox2 and 3
Private Sub UserForm_Initialize()
For i = 1 To 3
UserForm1.Controls("CheckBox" & i).Value = False
Next i
Label1.Caption = ""
End Sub
証明:
ニースの答え!役に立った: – yuro
@yuro嬉しいことに助けてくれた:D – Sun