1

テキストとして「True」または「False」を含む Excel セルの列があります。

列には VBA コードが入力されます。

チェック ボックスを True ではなくチェック済みとして表示し、チェック ボックスを False ではなくチェックなしで表示する必要があります。

これは VBA コードから実行できますか? 値を含むセルが次のように参照されているとします。

ActiveWorkBook.Sheets("mySheetName").cells(i, 4)

i = ループ内の行インデックス。

4

2 に答える 2

1

必要に応じて For ループを変更するだけです。

サブ subPlaceCheckbox()

    Const cDblCheckboxWidth As Double = 15
    Const cStrCheckboxPrefix As String = "cb4_"

    Dim cb As CheckBox
    Dim rng As Range
    Dim i As Long

    Application.ScreenUpdating = False

    'まず、重複を避けるために古いチェックボックスをすべて削除します
    Sheet1.CheckBoxes の各 cb について
        If Left(cb.Name, Len(cStrCheckboxPrefix)) = _
            cStrCheckboxPrefix その後
            cb.削除
        終了条件
    次

    i = 1 から 20 の場合
        rng = Sheet1.Cells(i, 4) を設定します。

        'チェックボックスを配置
        cb = Sheet1.CheckBoxes.Add( _ を設定します。
            rng.Left + rng.Width / 2 - cDblCheckboxWidth / 2, _
            rng.Top、cDblCheckboxWidth、rng.Height)

        'チェックボックスのプロパティを設定
        cb付き
            .Name = "cb_" & rng.Address(False, False)
            .Value = rng.Value
            .LinkedCell = rng.Address
            .Display3DShading = True
            .Characters.Text = ""
        で終わる

        'セルの中身を隠す
        rng.NumberFormat = ";;;"

    次は

    Application.ScreenUpdating = True
サブ終了
于 2013-01-17T12:50:29.770 に答える
1

セルをTRUEまたはFALSEのままにして、チェックボックスをシートに追加し、チェックボックスのLinkedCellを元のセルに設定するだけです。セルを見たくない場合は、チェックボックスをその上に配置してください。

于 2013-01-17T12:54:00.437 に答える