4

注文構成スプレッドシートを作成しています。さまざまな製品カテゴリには互換性のないオプションがあるため、列 A にいくつかのチェックボックスを作成しました。コントロール ボタンで、選択されたチェックボックスがある列 H:L から各行の内容を選択し、それを削除してからチェックボックスの選択を解除したい. 私はそのようなコードを書く方法を本当に知りません。あなたの助けは本当に感謝しています.

Sub EliminateCheckBoxes() 
    Dim CB As CheckBox, n As Long, x As Long 
    n = ActiveSheet.CheckBoxes.Count 
    For x = n To 1 Step -1 
        Set CB = ActiveSheet.CheckBoxes(x) 
        If CB.Name <> "Check Box 1" Then 
    Next x 
End Sub
4

1 に答える 1

3

関連する行にリンクするチェックボックスのプロパティを使用する必要があります。(リンクされている場合) .LinkedCell (文字列の後に範囲オブジェクトを取得) を使用するか、関連する行に配置されている場合は .TopLeftCell (範囲)

例えば:

'Using LinkedCell
Range(cb.LinkedCell).EntireRow.Range("H1:L1").Delete

'or using TopLeftCell
cb.TopLeftCell.EntireRow.Range("H1:L1").Delete

cb.Value = -4146 'uncheck the checkbox

上記と、チェックボックスがチェックされているかどうかのチェックを追加したコードの例:

Sub EliminateCheckBoxes() 
    Dim CB As CheckBox, n As Long, x As Long 
    n = ActiveSheet.CheckBoxes.Count 
    For x = n To 1 Step -1 
        Set CB = ActiveSheet.CheckBoxes(x)
        If CB.Name <> "Check Box 1" Then 'are you intentionally excluding Check Box 1?
            If CB.Value = 1 then
                CB.TopLeftCell.EntireRow.Range("H1:L1").ClearContents
                CB.Value = -4146 'uncheck the checkbox
            End If
        End If
    Next x 
End Sub
于 2013-08-12T14:17:06.473 に答える