0
ExcelとVBAを使用してアンケートを作成します。私は質疑応答のテーブルを持っています。アンケートが始まると、私のコードはフォーム上のチェックボックスのラベルを上書きして答えを表示します。私は答えを取ってきて、チェックボックスの真偽値を使って列に書きます。Excel VBA:名前に基づいてチェックボックスをループする方法
変数 "aRow"は各質問の回答数です。 "lastAns"は最後の回答の行番号です。回答の数に応じて、いくつかのチェックボックスが非表示になります。 "CheckBox1"〜 "CheckBox4"は、チェックボックスの名前です。
次のコードは機能しますが、長すぎるため、チェックボックスをループしてその都度ラベルを変更するよりよい方法があります。私にそれを行う方法を教えてください! ありがとう!私のコメントへのフォローアップの答えとして
`lastAns = Cells(qRow, 5).End(xlDown).Row + 1
aRow = lastAns - qRow
If aRow >= 1 Then
Me.CheckBox1.Visible = True
Me.CheckBox1.Caption = Cells(qRow, 5)
Else: Me.CheckBox1.Visible = False
End If
If aRow >= 2 Then
Me.CheckBox2.Visible = True
Me.CheckBox2.Caption = Cells(qRow + 1, 5)
Else: Me.CheckBox2.Visible = False
End If
If aRow >= 3 Then
Me.CheckBox3.Visible = True
Me.CheckBox3.Caption = Cells(qRow + 2, 5)
Else: Me.CheckBox3.Visible = False
End If
If aRow >= 4 Then
Me.CheckBox4.Visible = True
Me.CheckBox4.Caption = Cells(qRow + 3, 5)
Else: Me.CheckBox4.Visible = False
End If
.....SAME CODE CONTINUES TILL 7...`
作業するコードは[コードレビュー](HTTPSに掲載する必要があります:// codereview.stackexchange.com/)。 AFAIKでは、コントロールの名前を文字列として作成し、コントロールコレクションのキーとして渡す必要があります。 –