У меня есть элемент управления checkbox с макросом, который принимает значение из столбца ячейки 6 и вставляет его в 8-й или 9-й столбец в зависимости от того, установлен флажок или нет. Это макрос:

Public Sub CB_Read()

Dim oShape As Shape
Dim oTarget As Range
Dim iTarget As Range

Set oShape = ActiveSheet.Shapes(Application.Caller)
'Change the "Offset(Row,Column)" in the next line to whatever cell is desired for the status of the checkbox.
Set StdRate = oShape.TopLeftCell.Offset(0, 6)
Set oTarget = oShape.TopLeftCell.Offset(0, 8)
Set iTarget = oShape.TopLeftCell.Offset(0, 9)


If oShape.ControlFormat.Value = xlOff Then
    iTarget.Value = StdRate.Value * [cityIndex]
    oTarget.Value = ""
Else
    oTarget.Value = StdRate.Value * [cityIndex]

    iTarget.Value = ""
End If

End Sub

Теперь я хотел бы получить значения в столбцах смещения (iTarget.Значение и oTarget.Значение) обновляется при изменении значения в ячейке с именем [cityIndex] без необходимости устанавливать флажок.

1 ответ1

0

Одним из способов было бы создание функции VBA, которая смотрела бы на значение ячейки cityindex и соответственно изменяла смещение.

Как именно это сделать, зависит от того, что вы поместите в ячейку cityindex. Если это число, то вы можете просто добавить это число к базовому смещению, чтобы получить правильный столбец. Если это текст, вам нужно будет выполнить поиск - если города не сильно меняются, вероятно, проще всего сделать это прямо в коде, в противном случае вам понадобится таблица поиска на рабочем листе, и вам нужно будет выполнить Посмотри на это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .