(Excel VBA)插入复选框(OKAY),并将其链接到单独工作表中的单元格(不正常)

时间:2019-07-03 06:07:25

标签: excel vba

我有一个简短的宏,可以将复选框插入称为“仪表板”的工作表的单元格中,并且工作正常,但是我需要将它们链接到不同工作表(在同一工作簿中)中的单元格,我称之为“范围” ”,并具有各种正确/错误和列表填充。

全部结束后,会有1000个复选框。我知道它们有多麻烦。链接的单元格应位于完全相同的位置,但应在“范围”表中。

当前,它将使用偏移量链接到同一工作表中的单元格,但是我不确定如何解释.LinkedCell属性以链接到另一工作表。

由于将.name属性分配给“范围”表,我感到有些困惑。

我的预期结果是在“范围”内创建表示链接单元格的“仪表盘”的镜像。

Dim c As Range
Dim myCBX As CheckBox
Dim wks As Worksheet
Dim rngCB As Range
Dim strCAP As String

Set wks = ActiveSheet
Set rngCB = wks.Range("C2:D4") 'This range will be 130 rows and 10 or more columns when I'm finished.

strCAP = ""

For Each c In rngCB
    With c
        Set myCBX = wks.CheckBoxes.Add(Top:=c.Top - 2, Width:=3, Height:=c.Height, Left:=c.Left + c.Width * 0.425)
        'Set myCBX = wks.CheckBoxes.Add(Top:=.Top, Width:=.Width, Height:=.Height, Left:=.Left)
    End With

    With myCBX

        'This is where it links the checkbox to a cell in the same sheet.
        'I'm unsure how to interpret .Name and LinkedCell to assign them to a sheet called "Range"
        .Name = "cbx_' & c.Address(0,0)"

        .LinkedCell = c.Offset(0, 2).Address(external:=True) 'This offset is specific to the amount of intended end-use columns.

        .Caption = strCAP


        End With
    Next c

1 个答案:

答案 0 :(得分:0)

我找到了自己的问题的答案,并认为我会分享。

我在网上找到了这个单独的功能,并在运行原始功能后运行了该功能,该功能成功放置了1200个左右的复选框。但是,这些框使excel变慢了很多,以至于我将其更改为1和0的数组,然后将它们链接到range选项卡中的True / False表,以便其他所有功能仍然起作用。

Sub ALinkCheckBoxes()
   Dim chk As CheckBox

   For Each chk In ActiveSheet.CheckBoxes
    'There is a random amount experimental of offsetting which visually aligned it within the center of the cell.
      chk.LinkedCell = "Range!" & chk.TopLeftCell.Offset(-9, 6).Address
   Next chk

End Sub