当单元格值改变时更新宏值

当单元格值改变时更新宏值

我有一个复选框控件,其中有一个宏,该宏从第 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

我现在希望当名为 [cityIndex] 的单元格中的值发生改变时,偏移列(iTarget.Value 和 oTarget.Value)中的值能够更新,而无需操作复选框。

答案1

一种方法是创建一个 VBA 函数,查看 cityindex 单元格的值并相应地更改偏移量。

具体如何操作取决于您在 cityindex 单元格中输入的内容。如果是数字,那么您可能只需将该数字添加到基数偏移量即可获得正确的列。如果是文本,则需要进行查找 - 如果城市变化不大,则最简单的方法是在代码中直接执行此操作,否则您将需要工作表中的查找表并需要对其进行 vlookup。

相关内容