Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1800to1804
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
Inhaltsverzeichnis

Excel Absturz | Userfrom

Excel Absturz | Userfrom
05.01.2021 13:22:17
Bernd
Hallo zusammen,
ich habe eine Userform in der ich mit einem Scanner Daten eingeben.
Zuvor prüfe ich ob die richtige Sachnummer gescannt wurde und ob der Barcode (Sachnummer+Index) schon mal gesannt wurden.
Das Markro funktioniert auch soweit.
Leider stürtzt Excel unregelmäßig bei der Scannung ab.
Habt ihr vielleicht eine Iddee an was es liegen kann oder ob im Code was steckt was Problem bereitet?
Danke Euch
CODE UserForm1:

Private Sub tbox_ItemNumber_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As  _
Integer)
ActiveSheet.Protect UserInterfaceOnly:=True, Password:="16051"
If KeyCode = vbKeyReturn Then
getCode = Left(tbox_ItemNumber.Text, 10)
Set st = Tabelle1
Set ot = Tabelle2
getValid = True
If st.Cells(2, 1).Text  getCode Then
getValid = False
tbox_ItemNumber.Text = ""
Me.tbox_ItemNumber.SetFocus
Call WAVBAD
UserForm2.Show
End If
If getValid Then
If WorksheetFunction.CountIf(ot.Columns(2), tbox_ItemNumber.Text) > 0 Then
getValid = False
'MsgBox "FEHLER | Der Artikel wurde bereits eingescannt und verpackt!",  _
vbCritical
tbox_ItemNumber.Text = ""
Me.tbox_ItemNumber.SetFocus
Call WAVBAD
UserForm3.Show
Else
Call WAVGOOD
ActiveWorkbook.Save
End If
End If
If getValid Then
nRow = ot.Range("A" & Rows.Count).End(xlUp).Row + 1
ot.Cells(nRow, 1) = st.Cells(2, 1).Text
ot.Cells(nRow, 2) = Me.tbox_ItemNumber.Text
ot.Cells(nRow, 3) = Now
ot.Cells(nRow, 4) = st.Cells(2, 2).Text
If st.Cells(2, 3).Value = st.Cells(2, 4).Value Then
UserForm5.Show
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ot.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/" & st.Cells(2, 2).Text & "_" &  _
Format(Date, "dd-mm-yyyy") & ".xlsx"
ActiveWorkbook.Close , False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
If MsgBox("Maximale Anzahl Artikel verpackt. Datei wurde erfolgreich  _
gespeichert.") = vbOK Then
Call druckmat
ot.Range("A2:D" & Rows.Count).ClearContents
End
End If
Else
Unload Me
UserForm1.Show
End If
End If
End If
If KeyCode = vbKeyEscape Then
End
End If
End Sub

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Absturz | Userfrom
05.01.2021 13:26:35
ralf_b
gibt's keinen Absturzbericht oder irgend eine Fehlermeldung?
AW: Excel Absturz | Userfrom
05.01.2021 13:43:59
onur
Excel stürzt ab?
Und warum glaubst du das? WAS GENAU passiert?
AW: Excel Absturz | Userfrom
05.01.2021 14:21:04
Bernd
Hallo zusammen,
beim scannen wird Excel abrupt nach X Vorgängen "hart" beendet (Absturz) ohne einen Hinweis oder eine Fehlermeldung und die autom. Wiederherstellung wird gestartet.
Gruß
Bernd
AW: Excel Absturz | Userfrom
05.01.2021 14:27:30
onur
Schwer dir zu helfen, OHNE die Datei zu haben.
AW: Excel Absturz | Userfrom
05.01.2021 14:30:40
ralf_b
1. Idee: du benutzt Objekte. wo werden die deklariert und wo gelöscht?

Set st = Tabelle1
Set ot = Tabelle2

AW: Excel Absturz | Userfrom
05.01.2021 15:55:14
Bernd
. Idee: du benutzt Objekte. wo werden die deklariert und wo gelöscht?
Die Objekte habe ich nirgens deklariert oder gelöscht.
Habe jetzt festgestellt, dass ca. nach .100 Scannungen Excel abstürzt.
Kann ich die Objekte im Marko regelmäßig löschen?
Gruß
Bernd
Anzeige
AW: Excel Absturz | Userfrom
05.01.2021 16:01:57
onur
POSTE ENDLICH DIE DATEI.
AW: Excel Absturz | Userfrom
05.01.2021 16:26:31
Oberschlumpf
hehe...ja, ich bin ja selbst n Freund von Bsp-Dateien...
ABER...hast DU denn auch einen Scanner UND genau die (Bar/QR)-Codes, die der Frager einscannt?
Nein, hast du nicht? Hmm...WIE willst du dann zum Testen die gleiche Testumgebung herstellen?!
AW: Excel Absturz | Userfrom
05.01.2021 16:27:44
onur
Scanner tut nix anderes, als Tastatureingaben zu simulieren - ODER ?
AW: Excel Absturz | Userfrom
05.01.2021 16:33:06
Oberschlumpf
Danke, wieder was gelernt - ich wusste bisher nicht, wie ein Scanner arbeitet....eigtl weiß ich es noch immer nicht so wirklich....aber dein Hinweis bringt mich zumindest auf den Weg :-)
AW: Excel Absturz | Userfrom
05.01.2021 16:35:01
onur
Dein Sarkasmus in allen Ehren, aber ich habe oft genug zu Hause an Codes für Scanner herumgebastelt, OHNE einen Scanner zu besitzen.
Anzeige
AW: Excel Absturz | Userfrom
05.01.2021 16:39:46
Oberschlumpf
ähh? ich meinte es ernst mit: ich weiß nicht wirklich, wie n Scanner arbeitet
AW: Excel Absturz | Userfrom
05.01.2021 16:44:39
onur
Sorry, ich dachte wirklich, du wüsstest es.
Ein Scanner ersetzt praktisch die Tastatur, damit man den (übersetzten) Barcode (den EAN-Code z.B.) nicht manuell eingeben muss, was man natürlich immer noch machen kann, falls man möchte oder es Probleme gibt.
AW: Excel Absturz | Userfrom
05.01.2021 16:39:03
onur
Es ist ja auch irrelevant, was für eine Tastatur du benutzt oder welche Tastaturcodes die Tastatur intern benutzt, was zählt, ist das Ergebnis, und zwar der Text, den die Tastatur am Ende ausspuckt.
AW: Excel Absturz | Userfrom
05.01.2021 16:03:23
ralf_b
Es kann durchaus sein das Excel in den 100 Scanns eine Menge Datenmüll anhäuft und dann damit nicht mehr klar kommt. Wird zwischendurch mal gespeichert?
schreibe ganz oben in dein Codemodul "option explicit".
der Compiler wird dann jede Variable auf korrekte Deklaration überprüfen.
dim st as Worksheet
set st = Tabelle1
Objekte löscht man am Ende der Sub z.B. mittels set st = nothing.
Sie werden sowieso nicht mehr gebraucht das sie nur innerhalb der Sub existieren. Es sei denn die Variablen sind global und deshalb außerhalb der Prozeduren deklariert.
Anzeige
AW: Excel Absturz | Userfrom
05.01.2021 20:58:19
Bernd
Hallo,
den nachstehenden Code kann ich 1111 mal scannen mit Fehlermeldung (UserForm) ohne Excel Absturz.
Danke erstmal :-)
Private Sub tbox_ItemNumber_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As  _
Integer)
ActiveSheet.Protect UserInterfaceOnly:=True, Password:="16051"
If KeyCode = vbKeyReturn Then
getCode = Left(tbox_ItemNumber.Text, 10)
Set st = Tabelle1
Set ot = Tabelle2
getValid = True
If st.Cells(2, 1).Text  getCode Then
getValid = False
'MsgBox "FEHLER | Falsche Sachnummer - bitte Artikel prüfen", vbCritical
tbox_ItemNumber.Text = ""
Me.tbox_ItemNumber.SetFocus
Call WAVBAD
UserForm2.Show
End If
If getValid Then
If WorksheetFunction.CountIf(ot.Columns(2), tbox_ItemNumber.Text) > 0 Then
getValid = False
'MsgBox "FEHLER | Der Artikel wurde bereits eingescannt und verpackt!",  _
vbCritical
tbox_ItemNumber.Text = ""
Me.tbox_ItemNumber.SetFocus
Call WAVBAD
UserForm3.Show
Leider steigt Excel immer noch im weitere Code aus.
Else
Call WAVGOOD
ActiveWorkbook.Save
'UserForm4.Show
End If
End If
If getValid Then
nRow = ot.Range("A" & Rows.Count).End(xlUp).Row + 1
ot.Cells(nRow, 1) = st.Cells(2, 1).Text
ot.Cells(nRow, 2) = Me.tbox_ItemNumber.Text
ot.Cells(nRow, 3) = Now
ot.Cells(nRow, 4) = st.Cells(2, 2).Text
If st.Cells(2, 3).Value = st.Cells(2, 4).Value Then
UserForm5.Show
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ot.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/" & st.Cells(2, 2).Text & "_" &  _
Format(Date, "dd-mm-yyyy") & ".xlsx"
ActiveWorkbook.SaveAs "\\10.95.2.3\Logistik\Schwaebisch Gmuend\80_Paco\ _
02_Storage\" &
ActiveWorkbook.Close , False
'ot.Range("A2:D" & Rows.Count).ClearContents
Application.ScreenUpdating = True
Application.DisplayAlerts = True
If MsgBox("Maximale Anzahl Artikel verpackt. Datei wurde erfolgreich  _
gespeichert.") = vbOK Then
Call druckmat
ot.Range("A2:D" & Rows.Count).ClearContents
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("Storage").Select
Range("A2:D1104").Select
Selection.ClearContents
Sheets("Scan Tool").Select
Range("B2").Select
Selection.ClearContents
Sheets("Scan Tool").Select
Range("C3").Select
Worksheets("Scan Tool").ComboBox1 = Empty
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End
End If
Else
Unload Me
UserForm1.Show
End If
End If
End If
If KeyCode = vbKeyEscape Then
End
End If
Set st = Nothing
Set ot = Nothing
End Sub

Anzeige
AW: Excel Absturz | Userfrom
05.01.2021 22:15:33
ralf_b
ich hab mal den Vorschlag von onur mit eingebaut und ein paar select's entfernt.
https://www.herber.de/bbs/user/142794.xlsm
wenn der aufruf der Wav Datei einen Fehler erzeugt ,dann solltest du mal schauen ob die Datei nicht defekt ist. Ich habe diese Datei nicht und deshalb wird sie nicht abgespielt und kein Fehler. Es wird übrgens nicht geprüft ob die Datei existiert. Das könnte auch zu Problemen führen. Muß aber nicht.
gruss
rb
AW: Excel Absturz | Userfrom
05.01.2021 16:39:11
Bernd
Hallo zusammen,
hier mal die Datei - könnt ihne den Fehler nachstellen?
https://www.herber.de/bbs/user/142783.xlsm
Gruß
Bernd
Anzeige
AW: Excel Absturz | Userfrom
05.01.2021 19:49:01
onur
Dein Problem: Du rufst aus der Userform die Userform auf, dadurch läuft irgendwann der Speicher voll.
Statt
Else
Unload Me
UserForm1.Show

nur das hier
Else
Me.tbox_ItemNumber = ""

UND die TabStop-Eigenschaft des CommandButton ("Fenster schließen") auf False stellen, damit der Focus nicht nach dem Scannen automatisch auf den Button springt.
Dann bleibt der Focus auf der Textbox und du kannst lustig weiterscannen.
AW: Excel Absturz | Userfrom
05.01.2021 21:00:12
Bernd
Leider stürzt Excel noch "wahrscheinlich" im folgende Code ab?
Else
Call WAVGOOD
ActiveWorkbook.Save
'UserForm4.Show
End If
End If
If getValid Then
nRow = ot.Range("A" & Rows.Count).End(xlUp).Row + 1
ot.Cells(nRow, 1) = st.Cells(2, 1).Text
ot.Cells(nRow, 2) = Me.tbox_ItemNumber.Text
ot.Cells(nRow, 3) = Now
ot.Cells(nRow, 4) = st.Cells(2, 2).Text
If st.Cells(2, 3).Value = st.Cells(2, 4).Value Then
UserForm5.Show
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ot.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/" & st.Cells(2, 2).Text & "_" & Format(Date, "dd-mm-yyyy") & ".xlsx"
ActiveWorkbook.Close , False
'ot.Range("A2:D" & Rows.Count).ClearContents
Application.ScreenUpdating = True
Application.DisplayAlerts = True
If MsgBox("Maximale Anzahl Artikel verpackt. Datei wurde erfolgreich gespeichert.") = vbOK Then
Call druckmat
ot.Range("A2:D" & Rows.Count).ClearContents
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("Storage").Select
Range("A2:D1104").Select
Selection.ClearContents
Sheets("Scan Tool").Select
Range("B2").Select
Selection.ClearContents
Sheets("Scan Tool").Select
Range("C3").Select
Worksheets("Scan Tool").ComboBox1 = Empty
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End
End If
Else
Unload Me
UserForm1.Show
End If
End If
End If
If KeyCode = vbKeyEscape Then
End
End If
Set st = Nothing
Set ot = Nothing
End Sub
Anzeige
AW: Excel Absturz | Userfrom
05.01.2021 21:05:33
onur
IST ES SOOOO SCHWER ? DU HAST JA AUCH NIX GEÄNDERT !
ÄNDERE DAS, WAS ICH GEPOSTET HABE UND DANN STÜRZT DER CODE AUCH NICHT MEHR AB!
AW: Excel Absturz | Userfrom
05.01.2021 21:08:25
Bernd
Genauer gesagt es muss an de Zeile liegen:
Else
Call WAVGOOD
ActiveWorkbook.Save
Wenn ich diese ausblende stürzt Excel nicht ab.
Hat jemand eine Idde wie ich das anderst lösen kann?
Gruß
Bernd
AW: Excel Absturz | Userfrom
05.01.2021 22:16:23
Bernd
Danke - werde es nochmals testen
AW: Excel Absturz | Userfrom
05.01.2021 22:25:00
onur
Am Sound liegt es nicht.
Ich habe die Zeile ausapostrophiert und bekam, wie du, nach 64 Durchläufen einen Absturz.
Habe eine neue Datei erstellt, eine Userform hinzugefügt, darauf nur einen Commandbutton hinzugefügt.
Der Commandbutton hat nur in A1 den Wert erhöht und mit
Unload Me
Userform1.Show
das gleiche gemacht wie deine Datei.
Siehe da: bei ca 100 Durchläufen ist Excel abgestürzt (diesmal mit der Meldung "Speicherüberlauf").
MIT den Änderungen von mir läuft deine Datei einwandfrei.
Anzeige
AW: rekursiver Aufruf, Stapelspeicher voll
06.01.2021 00:00:48
ralf_b
Hallo Bernd,
da mich das nicht losgelassen hat, habe ich auch ein bissel rumgetestet.
bei mir gibt es den Fehler bei Durchlauf 143 mit Onurs Testbeschreibung
der Fehler 28 - nicht genügend Stapelspeicher tritt dann auf.
Ursache ist der rekusive Aufruf der Userform durch sich selbst.
Gut sichtbar in der Aufrufliste im Vba-Editor.
ohne den rekusiven Aufruf zeigt der Aufrufstapel nur einmal die button_click sub.
mit rekursiven Aufruf (bild oben) ruft sich die sub immer wieder selbst auf und bleibt im Speicher.
Userbild
gruß
rb
Anzeige
AW: Excel Absturz | Userfrom
06.01.2021 10:37:00
Bernd
Danke - Euch
Funktioniert ohne Fehler.
Ihr seit Klasse !!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige