Msgbox有两个不同的标准

时间:2016-03-17 06:57:26

标签: excel vba excel-vba msgbox

我有一张excel表,列有A,B,C,D。

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

当C& C时,我需要弹出消息框。 D匹配我的目标值,并显示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号达到标准时弹出消息框)请帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

通过将另一个参数传递给函数,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

希望这有帮助。