VBA中的单元格更改时如何更新宏

时间:2019-01-31 17:52:18

标签: excel vba ms-office

因此,我是VBA的新手,我想通过将每小时的费率乘以一小时将员工的小时数转换为美元,反之亦然。但是我不确定如何处理小时费率的变化。所以目前我的代码如下:

Sub dollarHour()

    Dim hrs As Range

    Set hrs = Range("D3:N33")

    For Each cell In hrs
        If cell.NumberFormat = "0.00" Then
            cell.Value = cell * Range("P37")
            cell.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"

        Else
            cell.Value = cell / Range("P37")
            cell.NumberFormat = "0.00"

        End If

    Next

End Sub

因此,基本上我的问题是可以更改“ P37”(美元乘数),但是它不会影响单元格,直到我再次运行宏以更改原始员工的工作时间(这是我不希望的) )。因此,例如,如果我将“ P37”从25美元更改为26美元,我希望以小时为单位的单元格能够反映出这种变化。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用Worksheet_Change事件。每当$ P $ 37更改时,该宏就会运行。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$P$37" Then
        dollarhour
    End If
End Sub