(Excel VBA) Вставка флажков (OKAY) и привязка их к ячейкам в отдельном листе (не OKAY) - PullRequest
0 голосов
/ 03 июля 2019

У меня есть короткий макрос для вставки флажков в ячейки на листе «Панель инструментов», который работает нормально, но мне нужно связать их с ячейками на другом листе (в той же книге), который я называю «Диапазон» "и имеет все виды True / False и список населения.

Там будет что-то вроде 1000 флажков, когда все это закончится. Я осознаю, насколько они громоздки. Связанные ячейки должны находиться в том же месте, но на листе «Диапазон».

В настоящее время он будет ссылаться на ячейки на том же листе с использованием смещения, но я не уверен, как интерпретировать свойство .LinkedCell для ссылки вместо него на другой лист.

Я немного возился с назначением их на лист "range", но безуспешно из-за свойства .Name.

Мои ожидаемые результаты - создание зеркального отображения «Dashboard» в пределах «Range», представляющего связанные ячейки.

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 голосов
/ 03 июля 2019

Я нашел ответ на свой вопрос и решил поделиться им.

Я нашел эту отдельную функцию в сети и запустил ее после того, как запустил оригинальную, которая успешно установила около 1200 флажков.Однако блоки замедлились настолько сильно, что я изменил их на массив из 1 и 0, который затем связался с таблицей 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...