Msgbox有两个不同的标准

我有一个Excel表,列A,B,C,D。

C&D编号一直在变化(他们有不同的标准),因为它是通过实时提取的库存数据进行计算的。

当C&D匹配我的目标值时,我需要消息框popup,并显示列A中的行情,列B中的名称以及C / D中的数字。

有了帮助,我知道只有C列的代码:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.column = 3 And Target.value >= -4 And Target.value <= 4 Then Call MsgBoxMacro(Target.value, Target.column, Target.row) End If End Sub Sub MsgBoxMacro(value, column, row) MsgBox "Ticker: " & Cells(row, column - 2) & vbNewLine & "Stock Name: " & Cells(row, column - 1) & vbNewLine & "Variable Value: " & value End Sub 

我不知道该怎么做,当我想将D列数据添加到代码中。 (所以当D号达到标准时,我可以popup消息框)请帮助。

谢谢!

通过将另一个parameter passing给函数MsgBoxMacro将解决您的问题:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.column = 32 And Target.value >= -4 And Target.value <= 4 Then Call MsgBoxMacro(Target.value, Target.column, Target.row, 0) End If If Target.column = 33 And Target.value >= -4 And Target.value <= 4 Then Call MsgBoxMacro(Target.value, Target.column, Target.row, 1) End If End Sub Sub MsgBoxMacro(value, column, row, counter) MsgBox "Ticker: " & Cells(row, column - 31 - counter) & vbNewLine & "Stock Name: " & Cells(row, column - 30 - counter) & vbNewLine & "Variable Value: " & value End Sub 

希望这可以帮助。

像这样的东西,离你的东西不远。 这将在工作表中进行更改。

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 Then If ((Target.Offset(0, -1).Value > -4 And Target.Offset(0, -1).Value < 4) And _ (Target.Value > -4 And Target.Value < 4)) Then ' Msgbox here Else End If End If End Sub