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