Anzeige
Archiv - Navigation
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
868to872
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

MsgBox nur einmalig

MsgBox nur einmalig
10.05.2007 14:42:39
Dirk
Hallo,
im Sheet 'Test' benutze ich bisher folgenden Code:

Private Sub Worksheet_Activate()
If Sheets("Tipps").Cells(36, 5)  "keine" Then
If MsgBox("Es gibt ungelesene Nachrichten!  Jetzt lesen?", vbExclamation + vbYesNo) = vbYes  _
Then
Sheets("Neues").Activate
Else
' Was soll bei NEIN passieren? Ggf. Counter+1 u. somit MsgBox "deaktivieren"...
End If
End If
End Sub


Dazu habe ich 2 Fragen:
1. Wie kann ich da noch eine vbInformation (siehe: MsgBox "Es gibt ungelesene Nachrichten !", vbInformation, "Bitte beachten...") einbauen?
2. Diese MsgBox soll nur einmalig während einer Sitzung erscheinen - klickt der User also auf NEIN, so soll erst beim erneuten Öffnen der Datei wieder der Hinweis kommen.
Gibt es dazu ein anderes Ereignis als Worksheet_Activate()?
Zwar hatte ich die Idee mit einem Counter (Reset sollte beim Schliessen bzw. Öffnen der datei erfolgen), aber kriege das nicht realisiert... :-(
Ich freue mich auf eure Ideen.
ciao Dirk

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox nur einmalig
10.05.2007 15:00:00
Andi
Hi,
zu 1:
Es geht nur vbExclamation oder vbInformation, beides zusammen geht nicht.
zu 2:
Wenn das ganze nur beim Öffnen der Mappe passieren soll, dann kopiere Deinen Code in Workbook_Open-Ereignis im Modul 'DieseArbeitsmappe'.
Schönen Gruß,
Andi

AW: MsgBox nur einmalig
10.05.2007 15:58:36
Dirk
Hi Andy,
zu 1.: Schaaaade...
zu 2.: Deine Idee mit dem Workbook_Open-Ereignis hatte ich auch schon.
Allerdings hatte ich sie wieder verworfen, da folgendes dabei nicht berücksichtigt wird:
Die Nachrichten im Sheet 'Neues' werden größtenteils erst durch Eintragungen in anderen Sheets generiert bzw. wieder gelöscht. Erst wenn der User in der richtigen Reihenfolge das Sheet 'Test' erreicht hat UND es gibt immernoch ungelesene Nachrichten, soll die MsgBox erscheinen.
Mit der Einmaligkeit will ich später eine Art Plausibilitätsprüfung verbinden. D.h. über den Counter möchte ich weitere Änderungen verhindern - der User hat nur noch die Möglichkeit, die Mappe zu schließen... (Selbstverständlich werde ich DANN auch die Reset-Routine mit einem PW versehen...)
Ich hoffe, ich habe dich nun nicht allzu sehr verwirrt, aber die Sache mit dem Counter wäre mir schon sehr wichtig...
Hast du eine Idee?
ciao Dirk

Anzeige
AW: MsgBox nur einmalig
10.05.2007 16:10:39
Andi
Hi,
zu 1:
Das soll ja dazu dienen, den Charakter des Message deutlich zu machen. Wenn da jetzt die blaue Information-Blase neben dem Warndreieck steht, dazu vielleicht noch das rote critical-Symbol, dann wäre die MsgBox zwar schön bunt, aber auch ganz schön unübersichtlich...
zu 2:
Dann führen wir einfach eine projektweit gültige boolsche Variable ein, die wir überprüfen, bevor die MsgBox angezeigt wird. Standardmäßig ist diese Variable false, und wenn die MsgBox einmal gezeigt wurde, dann setzen wir sie auf true.
Dazu kopierst Du ein ein Stadardmodul diese Zeile:
Public a As Boolean
Deinen Code änderst Du wie folgt:

Private Sub Worksheet_Activate()
If Sheets("Tipps").Cells(36, 5)  "keine" And a = False Then
a = True
If MsgBox("Es gibt ungelesene Nachrichten!  Jetzt lesen?", vbExclamation + vbYesNo) = vbYes _
Then
Sheets("Neues").Activate
Else
' Was soll bei NEIN passieren? Ggf. Counter+1 u. somit MsgBox "deaktivieren"...
End If
End If
End Sub


Ungetestet, sollte aber funkionieren.
Schönen Gruß,
Andi

Anzeige
AW: MsgBox nur einmalig
10.05.2007 17:59:06
Dirk
Hi Andi,
zu 1.: Ich wollte lediglich den "Titel" der MsgBox ändern - alles andere sollte beibehalten werden.
zu 2.: Zwar habe ich den Code geändert, aber es funzt nicht...
Das schreibe ich allerdings meinen mangelnden EXCEL- (u. VBA-) Kenntnissen zu.
Was meinst du mit:

Dazu kopierst Du ein ein Stadardmodul diese Zeile:
Public a As Boolean


Zwar habe ich in einem neuen Modul diese Zeile eingefügt, brachte aber nicht den gewünschten Erfolg...
Was ist ein Standardmodul bzw. kannst du den Tipp ggf. mal testen?
MfG Dirk

Anzeige
AW: MsgBox nur einmalig
10.05.2007 18:10:00
Andi
Hi,
1.
den Titel kannst Du schon ändern, und zwar genau so wie Du es im ersten posting selbst geschrieben hast. Das Information-Symbol kannst Du allerdings nicht anzeigen im Titel.
2.
Sollte eigentlich funktionieren. Die einzelne Zeile gehört in ein Modul, dass Du im VB-Editor über Einfügen - Modul erzeugen kannst. So wie ich Dich verstehe, hast Du genau das gemacht.
Getestet habe ich das ganze mit folgendem Activate-Ereignis im Modul der Tabelle:

Private Sub Worksheet_Activate()
If Range("A1")  10 And a = False Then
a = True
MsgBox "x"
End If
End Sub


Wenn jetzt also in A1 nicht 10 steht und die entsprechende Tabelle angeklickt wird, dann kommt die MsgBox. Allerdings nur einmal; bis die Mappe geschlossen und wieder geöffnet wird, dann kommt die Meldung wieder genau einmal.
So sollte es doch sein, oder?
Schönen Gruß,
Andi

Anzeige
AW: MsgBox nur einmalig
10.05.2007 19:50:00
Dirk
Hallo Andi,
zu 2.: Habe dank deinem letzten post "unseren" Fehler entdeckt: mit cells(36, 5) funzt es nicht - korrekt ist Range("e36")... Dann klappt's auch mit dem Nachbarn... ;-) ;-)
Also hier der funktionierende Code für's Archiv:

Private Sub Worksheet_Activate()
If Sheets("Tipps").Range("e36")  "keine" And a = False Then
a = True
If MsgBox("Es gibt ungelesene Nachrichten!  Jetzt lesen?", vbExclamation + vbYesNo) = vbYes _
Then
Sheets("Neues").Activate
Else
' Was soll bei NEIN passieren?
End If
End If
End Sub


zu 1.: "Das Information-Symbol kannst Du allerdings nicht anzeigen im Titel" - das ist auch nicht mein Ziel.
Es soll lediglich das "standardmäßige" Microsoft-Excel ersetzt werden durch einen anderen Text UND die Optionen Ja / Nein sollen dabei verfügbar bleiben...
Poste doch bitte mal die korrekte Syntax.
Vielen Dank.
ciao Dirk

Anzeige
AW: MsgBox nur einmalig
10.05.2007 20:05:00
Andi
Hi,
zu 2:
Freut mich... :-)
zu 1:
das hattest Du doch vom Prinzip her in Deinem ersten posting schon korrekt drin:
If MsgBox("Es gibt ungelesene Nachrichten! Jetzt lesen?", vbExclamation + vbYesNo, "Bitte beachten") = vbYes _
Then
Schönen Gruß,
Andi

AW: MsgBox nur einmalig
10.05.2007 22:17:09
Dirk
Hallo Andi,
da habe ich nun soooo viel ausprobiert, aber darauf bin ich nicht gekommen...
Vielen Dank, genau das war mein Ziel.
Danke auch für deine Geduld.
MfG Dirk

Gern geschehen... (ot)
11.05.2007 09:27:00
Andi
.

AW: MsgBox nur einmalig
10.05.2007 15:11:01
Holger
Hallo Dirk,
trage den Code in das Modul Sub Workbook_Open() der Arbeitsmappe ein.
Was du mit vbInformation meinst, weiß ich nicht genau. Vielleicht meinst du verknüpfungen wie
"Es gibt ungelesene Nachrichten von" & Sheets("Tipps").Cells(36, 5) & " Bitte beachten..."
Holger

Anzeige
AW: MsgBox nur einmalig
10.05.2007 16:04:37
Dirk
Hallo Holger,
sorry, da hat sich wohl etwas überschnitten...
Aber zu:

Was du mit vbInformation meinst, weiß ich nicht genau.


Ich wollte lediglich den "Titel" der MsgBox nach meinen Wünschen gestalten...
MfG Dirk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige