Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
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
msoControlPopup Caption string einfügen
17.05.2023 17:56:34
Fritz Poefzeck

Hallo, es ist mein erster Post hier, also bitte ich mir etweilige Fehler zu verzeien.

Also ich bin gerade Dabei mir bei meinem Programm eine "nicht störende Fehlermeldung" zu Programmieren.
Bei dieser soll am Linken unteren Rand eine Fehlermeldung erscheinen, die bei bedarf auch Ja/Nein optionen hat. Und die bei Klick ihrgendwo hin auf den Bildschierm einfach wieder verschwindet.

Gelöst habe ich es mit einer Function die eine Commandbar autpopen lässt, und über die Variable "Meldung" wird dann der jeweilige Text in das Comantdbarpopup geschrieben. es kommt aber an einer Stelle im Code (stelle Makiere ich im Code) der Laufzeitfehler '-2147024809 (80070057) Klasse Nicht registriet.
Da ich nicht weiterweis und auch Dr. Google mir keine Hinweise Liefert an was das liegt frage ich euch mal ob ihr wisst woran das liegt?

Bzw wenn ihr eine Andere Lösung für eine "nicht störende Fehlermeldung" die man per VBA nach X , Y Kordinaten Prositionieren kann, dan bin ich auch für dieese lüsung zu haben.


Public Function fehlermeldungNeStoerend(Optional ByRef Meldung As String, Optional State As String, Optional YesNoButton As Boolean) As Boolean

Dim Hoehe As Double
Dim Breite As Double
Dim OTop As Long
Dim Links As Long
Dim Fehlerbar  As CommandBar
Dim Alitem As CommandBarControl
Dim YesButton As CommandBarControl
Dim NoButton As CommandBarControl
Dim myRect As RECT
Dim hWnd As LongPtr

If Meldung = "" Then
'wenn Meldung = ""

Meldung = "123test"

Else
'wenn Meldung > ""
End If

Hoehe = ActiveWindow.Height
Breite = ActiveWindow.Width

hWnd = Application.hWnd

GetWindowRect hWnd, myRect



Set Fehlerbar = CommandBars.Add("", msoBarPopup, , True)

If YesNoButton = True Then
' wenn YesNoButton = wahr

Set Alitem = Fehlerbar.Controls.Add(msoControlPopup, , , , True)

' fehler tritt beim Nachfolgendem Befehl auf!!!!!!!!
Alitem.Caption = Meldung

Set YesButton = Alitem.Controls.Add(msoControlPopup, , , , True)

YesButton.Caption = "Ja"

Set NoButton = YesButton.Controls.Add(msoControlButton, , , , True)

NoButton.Caption = "Nein"

Else
'wenn YesNoButton = falsch

Set Alitem = Fehlerbar.Controls.Add(msoControlButton, , , , True)

Alitem.Caption = Meldung

fehlermeldungNeStoerend = False

End If


OTop = myRect.Bottom - Fehlerbar.Height - 52


Links = myRect.Left

Beep
Fehlerbar.ShowPopup Links, OTop


End Function



Die Function wird aus einem Anderem Modul wie folgt aufgerufen


Sub Diensteinfuegen()

'code----------------------------------------

If DiferenzLetzterDienst > 39600 Then
'wenn Tägliche ruhepause von Letzten bin zu diesen dienst 11 h Beträgt

If DiferenzNächsterDienst > 39600 Then
'wenn Tägliche ruhepause vom Diesem Dienst bis zum nächsten 11 h Beträgt

Else
'wenn Tägliche ruhepause vom Diesem Dienst bis zum nächsten keine 11 h Beträgt


End If

Else
'wenn Tägliche ruhepause von Letzten bin zu diesen dienst keine 11 h Beträgt


If DiferenzLetzterDienst > 32400 Then
'wenn Tägliche ruhepause von Letzten bin zu diesen dienst mehr als 9  h Beträgt


If fehlermeldungNeStoerend("Wahnung: die Ruhezeiten bei " & AktMitarbeiter & " am " & Format(Jetzt, "dd.mm.yyyy") & ", die Ruhezeit ligt mit " & Format$(CDate(CDbl(DiferenzLetzterDienst * (1 / 86400))), "hh:nn") & " Stunden und Minuten, Unter 11 Sstuden, Die Differenz von " & " Stunden und Minuten, muss in Form von, z.b Zeitausgleich oder Anddere Ruhetagen Einteteilt werden. Soll" & DienstX & "eingeteilt werden?", , True) = True Then
'wenn fehlermeldungNeStoerend("Wahnung!: die Ruhezeiten bei " & AktMitarbeiter & " am " & Format(Jetzt, "dd.mm.yyyy") & ", die Ruhezeit ligt mit " & Format$(CDate(CDbl(DiferenzLetzterDienst * (1 / 86400))), "hh:nn") & " Stunden und Minuten, Unter 11 Sstuden, Die Differenz von " & Format$(CDate(CDbl(DiferenzLetzterDienst * (1 / 86400))), "hh:nn") & " Stunden und Minuten, muss in Form von, z.b Zeitausgleich oder Anddere Ruhetagen Einteteilt werden", True) = True
 
Else
'wenn fehlermeldungNeStoerend("Wahnung!: die Ruhezeiten bei " & AktMitarbeiter & " am " & Format(Jetzt, "dd.mm.yyyy") & ", die Ruhezeit ligt mit " & Format$(CDate(CDbl(DiferenzLetzterDienst * (1 / 86400))), "hh:nn") & " Stunden und Minuten, Unter 11 Sstuden, Die Differenz von " & Format$(CDate(CDbl(DiferenzLetzterDienst * (1 / 86400))), "hh:nn") & " Stunden und Minuten, muss in Form von, z.b Zeitausgleich oder Anddere Ruhetagen Einteteilt werden", True) = Falsch
End If

Else
'wenn Tägliche ruhepause von Letzten bin zu diesen dienst weniger als 9  h Beträgt

Call fehlermeldungNeStoerend("FEHLER: Zu Kurze Ruhezeiten bei " & AktMitarbeiter & " am " & Format(Jetzt, "dd.mm.yyyy") & ", die Ruhezeit beträgt nur  " & Format$(CDate(CDbl(DiferenzLetzterDienst * (1 / 86400))), "hh:nn") & " Stunden und Minuten", , False)

End If

End If

'weiterer Code--------------

end sub



7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: msoControlPopup Caption string einfügen
17.05.2023 18:03:50
Daniel
Hi
was spricht gegen eine normale Userform mit showmodal = false?
Gruß Daniel


AW: msoControlPopup Caption string einfügen
17.05.2023 21:07:31
Fritz Poefzec
Stimmt Daniel, eine Normale Userform ohne Rahmen und mit showmodal = false könnte eine Notlösunng sein, sie ist hald nicht so elegant aber ja.

Ich warte noch einpaar tage, Mich würd Trotzdem interessieren wieso der Laufzeitfehler auftritt.


AW: msoControlPopup Caption string einfügen
17.05.2023 19:19:26
onur
Nix für Ungut, aber mal "Off Topic":
Statt:
    If Meldung = "" Then
        'wenn Meldung = ""
        Meldung = "123test"
    Else
        'wenn Meldung > ""
    End If
reicht:
Public Function fehlermeldungNeStoerend(Optional ByRef Meldung As String = "123test", Optional State usw usw
Mal abgesehen davon, dass Else ohne Code, was passiert, wenn "ELSE" zutrifft, komplett weggelassen werden kann.
Also:
    If Meldung = "" Then Meldung = "123test"


Anzeige
AW: msoControlPopup Caption string einfügen
17.05.2023 21:30:47
Fritz Poefzec
"Off Thopic"

hallo onur

Weist eh der Mensch ist ein Gewohnheitstier, ich hab mir das Progamieren vor 3 Jahren über Youtube gelehrnt und bin am anfang öfters bei Inernanderfolgenden If abfragen gesscheitert weil ich öfters nimmer wuste zu welchen if das ein oder andere else oder end if gehört


AW: msoControlPopup Caption string einfügen
17.05.2023 21:38:20
onur
Wie gesagt, die gesamte IF-Abfrage ist unnötig, wenn du optionale Parameter RICHTIG programmierst. Aber das sind so Sachen, die Jeder mit "VBA-gut" eigentlich wissen müsste. :)


AW: msoControlPopup Caption string einfügen
17.05.2023 21:52:54
Fritz Poefzec
Ich dachte das Level bezieht sich auf die Komplexisität der gestellten Frage, und nicht auf meine VBA-kenntnisse ;)


Anzeige
AW: msoControlPopup Caption string einfügen
17.05.2023 21:54:02
onur
Ja, nee, ist klar.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige