proszę pokrywa się ze mną jak próbuję wypracować jak zwięźle jako poss:Moje proste MsgBox VBA zatrzymuje cały arkusz kalkulacyjny, chyba że klikam "ok"?
Mam podstawowe arkusza handlowego, które ma ceny na żywo i jeśli cena przewyższa moją docelową ceny wejścia komórce powiedzieć AB4, pokazuje tekst " KUPOWAĆ". Jeśli posiadam akcje, a cena spadnie poniżej celu, ta sama komórka pokazuje "SPRZEDAJ". Tak czy inaczej, arkusz kalkulacyjny automatycznie wyśle także polecenie wykonania transakcji.
Wszystko, czego chciałem, to msgbox, aby przypomnieć mi o robieniu notatek za każdym razem, gdy pojawi się sygnał. Potrzebuję tylko jednego przypomnienia, ale potrzebuję go, ponieważ zawsze zapominam.
Po przeczytaniu wielu wcześniejszych postów tutaj, to była moja pierwsza próba:
Private Sub worksheet_calculate()
If Range("AB4").value = "BUY" Or Range("AB4").value = "SELL" Then
MsgBox ("Record Catalyst")
End If
End Sub
wydawało się do pracy, ale jak tylko kliknął „OK” MsgBox będzie natychmiast ponownie. Dopóki tekst "KUPUJ" lub "sprzedawaj" pokazywał, że msgbox nie zniknie bez względu na to, ile razy go kliknąłem.
Więc znowu szukał i znalazł sposób, aby sprawić, że msgbox pojawiają się tylko raz:
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
wydawało się działać zaklęcie wyjątkiem sytuacji, gdy nie kliknąć przycisk „OK”, aby sprawić, że znika cała moja MsgBox arkusz kalkulacyjny przestaje cokolwiek robić (tj. ceny nie są już aktualizowane, obliczenia już nie działają itd.)! Wydaje się, że najpierw czekam na kliknięcie "ok". Jest to poważny problem, ponieważ jeśli nie będę w pobliżu, gdy pojawi się msgbox, a arkusz kalkulacyjny zostanie zatrzymany, to wtedy cena za kolejne akcje w moim portfolio osiągnie cel, arkusz kalkulacyjny nawet nie będzie wiedział, nie mówiąc już o automatycznym wykonaniu polecenia.
Dlaczego ta prosta procedura zatrzymuje działanie arkusza kalkulacyjnego i jak mogę rozwiązać mój pierwotny "prosty" problem z msgbox? Nie chcę przechodzić warunkowej trasy formatowania w arkuszu kalkulacyjnym, ponieważ jest już zapełniona zbyt wieloma warunkowo sformatowanymi komórkami.
Dziękuję, guru!
MsgBox jest modalny - wymaga od użytkownika wykonania czynności przed kontynuowaniem. Zamiast używać MsgBox możesz stworzyć prosty UserForm, który można nazwać Modeless (i nie przerywać swojego arkusza kalkulacyjnego). Lub użyj paska stanu. – brettdj
Dlaczego potrzebujesz MsgBox na pierwszym miejscu? Dlaczego po prostu go nie usuniesz, po prostu dodaj tracker, ile razy twój kod działa (jeśli w jakiś sposób musisz go śledzić lub coś takiego). – L42
Och, widzę ..... Nie wiedziałem, że to "modalne". Ok, pozwól mi zajrzeć do UserForms i zobaczyć, jak mogą pomóc. Dzięki za wskazówkę! – Untitled