何らかの理由で、ワークシートのフォームコントロールのチェックボックスをループしてVBAコードをループさせて、「すべて選択」チェックボックスを表示できません。何であったかExcelのVBA - ループのフォームコントロールのチェックボックスが機能しない
Sub SelectAll_Click()
Dim CB As Shape
Dim sh As Worksheet
Set sh = ActiveSheet
For Each CB In sh.Shapes
If CB.Type = msoFormControl Then
If CB.FormControlType = xlCheckBox Then
MsgBox CB.Name, vbOKOnly
If CB.Name <> Application.ActiveSheet.CheckBoxes("cbSiteAll").Name Then
CB.Value = Application.ActiveSheet.CheckBoxes("cbSiteAll").Value
MsgBox xCheckBox.Name & ": " & xCheckBox.Value, vbOKOnly
End If
End If
End If
Next CB
End Sub
メッセージボックスは、私がしようとするために入力してデバッグ:
方法1:
Sub SelectAll_Click()
Dim CB As CheckBox
For Each CB In ActiveSheet.CheckBoxes
If CB.Name = ActiveSheet.CheckBoxes("cbSiteAll").Name Then
MsgBox CB.Name & ": " & CB.Value, vbOKOnly
CB.Value = ActiveSheet.CheckBoxes("cbSiteAll").Value
Else
MsgBox CB.Name & ": " & CB.Value, vbOKOnly
End If
Next CB
End Sub
方法2私はおそらくこれを行うことで動作し、次の2種類の方法に出くわしましたハプニング。上記の両方の場合、ループが始まりますが、私が得るメッセージボックスは、マクロを割り当てたボックスに関連しています。チェックボックスのチェックは、ループが少なくともチェックボックスのチェックを付けた項目を認識したとしても、チェックボックスのチェックは機能しますが、チェックボックスとしてループしているようには見えません。
上記を踏まえて、私はこの特定の問題に対処する答えを探し、無駄に自分自身に論理を働かせるためにかなりの時間を費やしました。悲しいかな、私は彼らが助けることができるかどうかを確認するためにインターネットに渡します。
ありがとうございました。
方法2が動作しますおそらく変更を(自分のサブルーチン名から判断) '' cbSiteAll "'を '' SelectAll "'に変更します。私はこれが最も簡単な方法かどうかを知るために頻繁にフォームコントロールを使用しませんが、それが私のために働いたことは分かります。おかげさまで – YowE3K
ループが正しく機能するようになると、私はそのビットに到達します。私のチェックボックスはグループ化されているので、コードはループしていなかった。理由は分かりませんが、私が持っていたループの問題を修正したようです。 – pmc086
メソッド1は、CB.Name = ActiveSheet.CheckBoxes( "cbSiteAll")を変更すると機能します。名前Then'を 'CB.Name <> ActiveSheet.CheckBoxes(" cbSiteAll ")にします。 '' cbSiteAll ''チェックボックスの値を変更するだけです。 – YowE3K