首页 > 解决方案 > 在复选框中指定更改

问题描述

我正在努力将复选框中的刻度链接到其他列表中的值并在之后基于此进行格式化。

(即人单击复选框,单元格变为灰色)

所以,我有许多复选框,每个文本框都标记为

“复选框 1” ... “复选框 44”

    Sub Link()
    Dim i As Long
    Dim checkbox(1 To 44) As checkbox

    For i = 1 To 44
        For Each element In checkbox
        ActiveSheet.Shapes.Range(Array(element)).Select
            With Selection
            .Value = xlOn
            .LinkedCell = "Calculation!$A$" & "i"
            .Display3DShading = False
            End With
        Next
    Next

    End Sub

但似乎我要么选择错误的复选框,要么以错误的方式分配它们的数组。任何帮助将不胜感激。

标签: excelvba

解决方案


ComputerVersteher 已经解决了您的基本问题,但您可以采用一种稍微简单的方法:

Sub x()

Dim i As Long

For i = 1 To ActiveSheet.CheckBoxes.Count
    With ActiveSheet.CheckBoxes(i)
        .Value = xlOn
        .LinkedCell = "Calculation!$A$" & i
        .Display3DShading = False
    End With
Next i

End Sub

这确实假设复选框是按顺序命名的(默认情况下它们应该是)。

说了这么多,我不确定你到底想做什么。


推荐阅读