我在VBA上有点生疏,但过去没有问题。
我编写了一个工作表更改事件,这样当我从单元格中的数据验证列表更改项目时,它会重新计算表格。我之前已经做了很多次但由于某种原因它甚至没有在事件宏的第一行代码中作为断点触发,当我用验证下拉列表改变单元格的值时,宏甚至都没有被击中。 / p>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsData As Worksheet, wsTarget As Worksheet
Set wsData = Sheets("RackCosts")
Set wsTarget = ActiveSheet
Dim TargetRangeValue As Variant
Dim numUnits As Integer
Dim unitCost As Double
Dim numUnitsRange As Range, unitCostRange As Range
Set numUnitsRange = wsTarget.Range("NumUnits")
Set unitCostRange = wsTarget.Range("Cost_Unit")
On Error GoTo ErrHandler:
'EquipType is the cells named range
If Target = wsTarget.Range("EquipType") Then
TargetRangeValue = Target.Value
当数据验证单元格被更改且断点位于Set wsData = ...代码行
时,此事件中甚至没有触发断点任何帮助,为什么这甚至不发射将不胜感激。
注意:我在工作簿打开事件中添加了启用事件以确保启用了事件(是的,我知道这是默认设置)....没有帮助。
注2:是的,代码在正确的工作表中。
答案 0 :(得分:-1)
我在本机下拉菜单中也遇到了类似的问题。从docs中得知,当工作表处于重新计算状态时,更改事件未不 已触发 >。甚至DoEvents也无济于事!
将worksheet_calculation设置为“手动”,或者您可以尝试通过以下方式捕获“计算”:
Application.Calculation = xlCalculationManual
然后启用自动计算或通过以下方式在需要时触发它:
Application.Calculate
为我工作。