2016-06-15 7 views
0

私はリストビューを持つユーザーフォームを持っています。このリストビューでは、1つの列がチェックボックスで定義されます。したがって、ユーザーが複数の行のチェックボックスをクリックすると、ラベルのキャプションに選択したIDを表示するとします(例: "You are selected: 848, 12133, 414"VBAでラベルを動的に定義する方法は?

どうすればいいですか?

答えて

1

は編集:私はちょうどあなたがリストビューについて話していることを見た ...ここ

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 

証明:

enter image description here

+0

ニースの答え!役に立った: – yuro

+0

@yuro嬉しいことに助けてくれた:D – Sun

関連する問題