vba - 我的简单 MsgBox VBA 会停止整个电子表格,除非我单击 "ok"?

标签 vba excel

请耐心等待,我会尽量简洁地阐述:

我有一个基本的交易电子表格,其中包含实时价格,如果价格超过我的目标入场价格,则单元格(例如 AB4)会显示文本“买入”。如果我拥有该股票并且价格跌破我的目标,同一单元格将显示“卖出”。无论哪种方式,电子表格都会自动发送订单来执行交易。

我想要的只是一个消息框,可以在信号出现时提醒我记笔记。我只需要一个提醒,但我确实需要它,因为我总是忘记。

在阅读了这里的许多过去的帖子后,这是我的第一次尝试:

Private Sub worksheet_calculate()
 If Range("AB4").value = "BUY" Or Range("AB4").value = "SELL" Then
  MsgBox ("Record Catalyst")
 End If
End Sub

似乎有效,但一旦我单击“确定”,消息框就会立即重新出现。只要“买入”或“卖出”文本显示,无论我点击多少次,消息框就不会消失。

所以我再次搜索,找到了一种让 msgbox 只出现一次的方法:

Private Sub worksheet_calculate()
If ActiveSheet.Range("BV4").Text = "Triggered" Then Exit Sub
  If Range("AB4").value = "BUY" Or Range("AB4").value = "SELL" Then
   MsgBox ("Record Catalyst")
ActiveSheet.Range("BV4") = "Triggered"
End If
End Sub

似乎很有魅力,除非我不单击“确定”以使消息框消失,我的整个电子表格将停止执行任何操作(即价格不再更新,计算不再执行等)!它似乎只是在等我先点击该死的“确定”。这是一个主要问题,因为如果当消息框出现并且电子表格停止时我不在场,那么如果我的投资组合中另一只股票的价格达到其目标,电子表格甚至不会知道,更不用说自动发出订单了。

为什么这个简单的过程会停止电子表格功能以及如何解决我原来的“简单”msgbox 问题?我不想在电子表格上采用条件格式设置,因为它已经挤满了太多的条件格式单元格。

谢谢各位高手!

最佳答案

看来主要问题是 MsgBox 不会超时并消失,因为该消息只是提供信息。

使用下面的代码,提示消息将在 2 秒内超时并允许子程序结束。

Private Sub worksheet_calculate()
    If ActiveSheet.Range("BV4").Text = "Triggered" Then Exit Sub
        If Range("AB4").Value = "BUY" Or Range("AB4").Value = "SELL" Then

            Set objShell = CreateObject("Wscript.Shell")

            intReturn = objShell.Popup("Record Catalyst", _
                2, , wshOk)

            If intReturn = 1 Then
                'do something if you click ok
            ElseIf intReturn = -1 Then
                'do something if times out alone, like record in a diff sheet
            End If

            ActiveSheet.Range("BV4") = "Triggered"

            Set objShell = Nothing

    End If
End Sub

希望这能解决您的问题。

关于vba - 我的简单 MsgBox VBA 会停止整个电子表格,除非我单击 "ok"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816780/

相关文章:

vba - 以整数形式插入日期 (Excel)

excel - 正在获取编译器错误(无效的标识符)

vba - 如何从 vb.net 脚本打开 Solidworks、运行宏和关闭 Solidworks?

sql-server - 在 VBA 中执行 SQL 时出现运行时错误

c++ - Excel NORMDIST 函数的 C++ 实现中的魔数(Magic Number)

python - 生成正确的excel xls格式

excel - VBA ActiveX 控件的大小随着远程桌面连接的增加而增大

vba - 根据单元格值VBA更改范围颜色

VBA一次粘贴一 block 单元格

vba - excel:高级过滤器中运行时错误 1004