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