Unt*_*led 5 excel vba excel-vba
当我试着尽可能简洁地阐述时,请耐心等待:
我有一个基本的交易电子表格,其中包含实时价格,如果价格超过我的目标入场价格,则单元格(例如AB4)显示文本"买入".如果我拥有股票并且价格低于我的目标,则同一单元格显示"卖出".无论哪种方式,电子表格还将自动发出订单以执行交易.
我想要的只是一个msgbox,提醒我在信号出现时做笔记.我只需要一个提醒,但我确实需要它,因为我总是忘记.
在这里阅读了很多过去的帖子后,这是我的第一次尝试:
Private Sub worksheet_calculate()
If Range("AB4").value = "BUY" Or Range("AB4").value = "SELL" Then
MsgBox ("Record Catalyst")
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
似乎工作,但一旦我点击"确定",msgbox会立即重新出现.只要"买"或"卖"文字显示msgbox就不会消失,无论我点击它的次数.
所以我再次搜索并找到一种方法使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
Run Code Online (Sandbox Code Playgroud)
似乎工作的魅力除了如果我没有点击"确定"使msgbox消失我的整个电子表格停止做任何事情(即价格不再更新,计算不再执行等)!它似乎在等我先点击爆破的"确定".这是一个主要问题,因为如果我出现msgbox并且电子表格停止时不在身边,那么如果我的投资组合中另一只股票的价格达到目标,电子表格甚至不会知道更不用说自动拍出订单了.
为什么这个简单的过程会阻止电子表格的运行?如何解决我原来的"简单"msgbox问题?我不想在电子表格上使用条件格式化路由,因为它已经混杂了太多有条件格式化的单元格.
谢谢大师们!
似乎主要问题是MsgBox没有超时并消失,因为消息只是提供信息.
使用下面的代码,Promped消息将在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
Run Code Online (Sandbox Code Playgroud)
希望这能解决您的问题.
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |