具有两个不同条件的 Msgbox

Msgbox with two different criteria

我有一个excel sheet,同时有A、B、C、D列。

C & D 数字一直在变化(他们有不同的标准),因为它是根据实时获取的股票数据计算的。

我需要在 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 号达到标准时弹出消息框)请帮忙。

谢谢!

类似这样的东西,离你所拥有的不远。这将进入要进行更改的工作表中。

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

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

希望对您有所帮助。