Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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
MsgBox wird nicht angezeigt
12.07.2020 15:08:25
Dominik
Hallo ich bräuchte mal eure Hilfe,
ich bin dabei eine Kasse zu programmieren. Soll z.B. ein Bonabbruch durchgeführt werden, muss die Karte des jeweiligen Verantwortlichen abgescannt werden. Die "Autorisierungsnummer" ist in einen Worksheet "Mitarbeiterstamm" hinterlegt, zudem muss in der Zelle des jeweiligen Mitarbeiters, bei Verantwortlicher "JA" stehen, damit die Autorisierung durchgeführt werden kann.
Scanne ich nun die Karte von z.B. Mitarbeiter1 wird die MsgBox "Bonabbruch durchgeführt" korrekt angezeigt, probiere ich das nun bei "Mitarbeiter2" wird zwar der Bonabbruch durchgeführt, allerdings ohne MsgBox.
Ist der Mitarbeiter nicht dazu berechtigt, hört man zwar den, ich sag mal Bing, der MsgBox mit vbExclamation, allerdings wird diese, mit dem Text "Mitarbeiter nicht zur Autorisierung" berechtigt, nicht angezeigt. Das selbe Problem habe ich bei der Anmeldung, da dort auch eine MsgBox erscheinen soll, dies aber nur bei bestimmten Mitarbeitern macht.
Das Problem kam auch von heute auf morgen, weshalb ich glaube, dass es weniger an meinem Code, als an Excel liegt.
Wenn ich z.B. eine neue Autorisierungsnummer festlege, dann geht es manchmal, manchmal aber auch eben nicht.
Ich hoffe ihr habt eine Idee was da falsch läuft.
VG Dominik

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Der Fehler liegt im fehlenden Code! (owT)
12.07.2020 15:52:57
EtoPHG

AW: Der Fehler liegt im fehlenden Code! (owT)
12.07.2020 16:00:46
Dominik

Private Sub Worksheet_Change(ByVal Target As Range)
With Worksheets("POS_A2")
If Target.Address = "$R$22" Then
Dim Bediener As Range
Set Bediener = Worksheets("Mitarbeiterstamm").Columns(7).Find(what:=Worksheets("POS_A2"). _
Range("R22").Value, _
lookat:=xlWhole)
If Not Bediener Is Nothing Then
If Worksheets("Mitarbeiterstamm").Range("F" & Bediener.Row).Value = "JA" Then
'Bonabbruch
If .Range("R23").Value = "Bonabbruch" Then GoTo Bonabbruch
'Bonstorno
If .Range("R23").Value = "Bonstorno" Then GoTo Bonstorno
'Retoure
If .Range("R23").Value = "Retoure" Then GoTo Retoure
'Parken
If .Range("R23").Value = "Parken" Then GoTo Parken
'Backoffice
If .Range("R23").Value = "Backoffice" Then GoTo Backoffice
'Wechselgeldzuteilung
If .Range("R23").Value = "Wechselgeldzuteilung" Then GoTo Wechselgeldzuteilung
'Bonabbruch
Bonabbruch:
Dim ?ber As Long
?ber = Worksheets("Autorisierungs?bersicht").Range("A99999").End(xlUp).Row + 1
'Autorisierungs?bersicht
'Bediener
Worksheets("Autorisierungs?bersicht").Range("A" & ?ber).Value = Worksheets(" _
POS_Erfassung").Range("D3").Value
'Name
Dim Bediener2 As Range
Set Bediener2 = Worksheets("Mitarbeiterstamm").Columns(4).Find(what:=Worksheets(" _
Autorisierungs?bersicht").Range("A" & ?ber).Value, _
lookat:=xlWhole)
If Not Bediener2 Is Nothing Then
Worksheets("Autorisierungs?bersicht").Range("B" & ?ber).Value = Worksheets(" _
Mitarbeiterstamm").Range("C" & Bediener2.Row).Value & "," & " " & Worksheets("Mitarbeiterstamm").Range("B" & Bediener2.Row).Value
End If
'Datum
Worksheets("Autorisierungs?bersicht").Range("C" & ?ber).Value = Date
'Uhrzeit
Worksheets("Autorisierungs?bersicht").Range("D" & ?ber).Value = Time
'Grund
Worksheets("Autorisierungs?bersicht").Range("E" & ?ber).Value = "***Bonabbruch***"
'Betrag
Worksheets("Autorisierungs?bersicht").Range("F" & ?ber).Value = Worksheets(" _
POS_Erfassung").Range("i2").Value
'Verantwortlicher
Worksheets("Autorisierungs?bersicht").Range("G" & ?ber).Value = Worksheets(" _
Mitarbeiterstamm").Range("D" & Bediener.Row).Value
'Name
Worksheets("Autorisierungs?bersicht").Range("H" & ?ber).Value = Worksheets(" _
Mitarbeiterstamm").Range("C" & Bediener.Row).Value & "," & " " & Worksheets("Mitarbeiterstamm").Range("B" & Bediener.Row).Value
Worksheets("POS_Erfassung").Range("R29").Value = ""
Dim Pos As Long
Pos = Worksheets("Bonjournal").Range("A9999").End(xlUp).Row
With Worksheets("Bonjournal")
.Range("i5").Value = Pos
'BonNr
Worksheets("Bonjournal").Range("A" & Pos + 1).Value = .Range("i5").Value + 999
Worksheets("POS_Erfassung").Range("c29").Value = .Range("i5").Value + 1000
'Umsatz
.Range("B" & Pos + 1).Value = "0"
'Bediener
.Range("C" & Pos + 1).Value = Worksheets("POS_Bezahlung").Range("D3").Value
'Name
Dim Bediener3 As Range
Set Bediener3 = Worksheets("Mitarbeiterstamm").Columns(4).Find(what:=Worksheets(" _
Bonjournal").Range("C" & Pos + 1).Value, _
lookat:=xlWhole)
If Not Bediener3 Is Nothing Then
.Range("D" & Pos + 1).Value = Worksheets("Mitarbeiterstamm").Range("C" & Bediener3.Row). _
Value & "," & " " & Worksheets("Mitarbeiterstamm").Range("B" & Bediener3.Row).Value
'Zahlungsart
.Range("E" & Pos + 1).Value = "---"
'Sonstiges
.Range("F" & Pos + 1).Value = "***Bonabbruch***"
End If
End With
MsgBox "Bon wurde erfolgreich abgebrochen", vbokayonly, "Best?tigung"
Worksheets("POS_Erfassung").Activate
Worksheets("POS_Erfassung").Range("R18").Activate
Worksheets("POS_Erfassung").Range("C8:F24").Value = ""
Worksheets("POS_Erfassung").Range("C8:F24").Font.Strikethrough = False
Worksheets("POS_Erfassung").Range("R26").Value = 0
Worksheets("POS_Erfassung").Range("R27").Value = 0
Worksheets("POS_Erfassung").Range("S26").Value = 0
Worksheets("POS_Erfassung").Range("S27").Value = 0
Worksheets("POS_Bezahlung").Range("C8:F24").Font.Strikethrough = False
Exit Sub
'Backoffice
Backoffice:
UserForm1.Label7.Caption = Worksheets("Mitarbeiterstamm").Range("D" & Bediener.Row).Value & ","  _
& " " & Worksheets("Mitarbeiterstamm").Range("C" & Bediener.Row).Value & " " & Worksheets("Mitarbeiterstamm").Range("B" & Bediener.Row).Value
UserForm1.Show
Worksheets("POS_Erfassung").Activate
Dim ?ber2 As Long
?ber2 = Worksheets("Autorisierungs?bersicht").Range("A99999").End(xlUp).Row + 1
'Autorisierungs?bersicht
'Bediener
Worksheets("Autorisierungs?bersicht").Range("A" & ?ber2).Value = Worksheets(" _
POS_Erfassung").Range("D3").Value
'Name
Dim Bediener4 As Range
Set Bediener4 = Worksheets("Mitarbeiterstamm").Columns(4).Find(what:=Worksheets(" _
Autorisierungs?bersicht").Range("A" & ?ber2).Value, _
lookat:=xlWhole)
If Not Bediener4 Is Nothing Then
Worksheets("Autorisierungs?bersicht").Range("B" & ?ber2).Value = Worksheets(" _
Mitarbeiterstamm").Range("C" & Bediener4.Row).Value & "," & " " & Worksheets("Mitarbeiterstamm").Range("B" & Bediener4.Row).Value
End If
'Datum
Worksheets("Autorisierungs?bersicht").Range("C" & ?ber2).Value = Date
'Uhrzeit
Worksheets("Autorisierungs?bersicht").Range("D" & ?ber2).Value = Time
'Grund
Worksheets("Autorisierungs?bersicht").Range("E" & ?ber2).Value = "Backoffice  _
gestartet"
'Betrag
Worksheets("Autorisierungs?bersicht").Range("F" & ?ber2).Value = "---"
'Verantwortlicher
Worksheets("Autorisierungs?bersicht").Range("G" & ?ber2).Value = Worksheets(" _
Mitarbeiterstamm").Range("D" & Bediener.Row).Value
'Name
Worksheets("Autorisierungs?bersicht").Range("H" & ?ber2).Value = Worksheets(" _
Mitarbeiterstamm").Range("C" & Bediener.Row).Value & "," & " " & Worksheets("Mitarbeiterstamm").Range("B" & Bediener.Row).Value
Worksheets("POS_Erfassung").Range("R29").Value = ""
Exit Sub
'Bonstorno
Bonstorno:
UserForm2.Show
Worksheets("POS_Erfassung").Activate
Exit Sub
Retoure:    Exit Sub
Parken:     Exit Sub
Wechselgeldzuteilung: Exit Sub
Else: MsgBox "Bediener nicht zur Autorisierung berechtigt", vbokayonly + vbExclamation,  _
"Fehler!"
Worksheets("POS_A2").Range("R22").Activate
End If
Else: MsgBox "Bediener nicht gefunden", vbokayonly + vbExclamation, "Fehler!"
Worksheets("POS_A2").Range("R22").Activate
End If
End If
End With
End Sub

Anzeige
Bitte Beispielmappe mit dem Fehler hochladen!
12.07.2020 16:34:17
EtoPHG
Hallo Dominik,
Mit dem geposteten Code komme ich nicht zurecht, da er nicht kompilierbar ist.
Der Codeablauf ist durch die Verwendung von GoTo extrem schwer les-/interpretierbar.
Ersetze ihn durch Struktur-Konstrukte, wie Select Case - End Select.
Analysiere durch Debuggen im Einzelschrittmodus (F8) wo dein Code in einem Fehlerfall durchläuft.
Falls du nicht weiterkommst, kannst du eine Beispielmappe hochladen, in der dieser Code läuft?
Gruess Hansueli
AW: Bitte Beispielmappe mit dem Fehler hochladen!
12.07.2020 18:24:52
Dominik
Ich habe nochmal was probiert.
Ich habe die Autorisierungsnummer manuell und nicht mit dem Handscanner eingefügt. Da klappt alles perfekt.
Wenn ich es mit dem Handscanner eingebe, funktioniert alles einwandfrei mit Mitarbeiter 1, aber bei Mitarbeiter 2 wird die MsgBox nicht angezeigt. Der Rest funktioniert aber dennoch super.
Ich habe mal eine Bespielmappe erstellt.
https://www.herber.de/bbs/user/139001.xlsm
Das Problem kam auch von heute auf morgen.
Anzeige
AW: Bitte Beispielmappe mit dem Fehler hochladen!
12.07.2020 19:25:09
EtoPHG
Hallo,
Ich kann das leider nicht nachstellen, denn ich hab ja keinen Scanner.
Bei manueller Eingabe in R22 funktionieren beide Autorisierungsnummern.
Der Scanner verändert aber die Zellposition, nach dem Einscannen, so dass du nach dem ersten erfolgreichen Einlesen, vermutlich nicht mehr auf R22 stehst, wo du die Eingabe erwartest.
Gruess Hansueli

353 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige