Laufzeitfehler '13' Typen unverträglich
28.07.2020 16:39:43
Daniel
ich habe dieses Excel-Programm so vom Vorgänger ohne großartige Vba-Kenntnisse übernommen, entsprechend bin ich für Lösungsvorschläge sehr dankbar.
Bei dem Programm werden (Mess-)Aufträge über ein Formular eingelesen in eine Excel-Datenbank und können dort über ein Formular bearbeitet bzw. abgeschlossen werden. Außerdem erfolgt eine Auswertung über diverse Pivots.
Anschließend der Code des Subs wo der Fehler Auftritt: hierbei geht es um das Schreiben einer txt-Datei aus der Formulareingabe fett: die Zeile die der Debugger als Hort des Fehlers betrachtet:
Private Sub cb_create_Click()
Dim e As Integer
Dim Zeile As Integer
e = 0 'fehlerzähler
' Überprüfung auf Plausibiliät
If IsEmpty(newOrder.T_Material.Value) Then
MsgBox "Bitte Materialnummer nach dem Muster befüllen."
e = 1
End If
If Len(newOrder.T_Material.Text) 10 Then
MsgBox "Bitte 10stellige Materialnummer eingeben."
e = 1
End If
If IsEmpty(newOrder.T_FA.Value) Then
MsgBox "Bitte Fertigungsauftrag befüllen."
e = 1
End If
If e = 0 Then ' *** Programm ausführen
' ******* Kennwortschutz für das Arbeitsblatt
Sheets("Auftrag").Unprotect Password:=""
' ******* Anlegen der Daten
' Auftragsnummer = 1 = Range("A" & Spalte).Value = "#" '1
Dim nr As String
nr = txt_Auftrag("laden", Dateipfad) + 1
Call txt_Auftrag("schreiben", Dateipfad, CStr(nr))
MsgBox "Ihr Messauftrag hat die Nr. " & nr & vbCrLf & vbCrLf & vbCrLf & _
"Bitte schreiben Sie die Nummer mit einem Wachsstift/Edding auf das Messteil _
sowie den Warenbegleitschein und legen beide zusammen im Regal ab." & vbCrLf & vbCrLf & _
"Vielen Dank!"
'leere zeilen löschen
For Zeile = 1 To 28
Worksheets("Auftrag").Cells(2, Zeile) = ""
Next Zeile
Worksheets("Auftrag").Cells(2, 1).Value = nr
' Material = 2 = Range("B" & Spalte).Value = "Material"
Worksheets("Auftrag").Cells(2, 2).Value = newOrder.T_Material.Value
' Nest = 3 = Range("C" & Spalte).Value = "Nestkennzeichnung"
Worksheets("Auftrag").Cells(2, 3).Value = newOrder.Combo_Nest.Value
' Auftragsnummer 4 = Range("D" & Spalte).Value = "FA NR"
Worksheets("Auftrag").Cells(2, 4).Value = newOrder.T_FA.Value
' Auftragsdatum 5 = Range("E" & Spalte).Value = "Fertigungsdatum"
Worksheets("Auftrag").Cells(2, 5).Value = newOrder.T_DATE.Value & " " & newOrder. _
T_Time.Value
' Optionsbox Werk 6 = Range("F" & Spalte).Value = "Art"
If O_ART_Serie = True Then
Worksheets("Auftrag").Cells(2, 6).Value = "Serie"
ElseIf O_ART_AUSPROBE Then
Worksheets("Auftrag").Cells(2, 6).Value = "Ausprobe"
Else
Worksheets("Auftrag").Cells(2, 6).Value = "Sonstiges"
End If
' Auftragsdatum 7 = Range("G" & Spalte).Value = "Bemerkung"
Worksheets("Auftrag").Cells(2, 7).Value = newOrder.T_Note.Value
' Optionsbox Werk 8 = Range("H" & Spalte).Value = "Anlieferung"
If O_WERK1 = True Then
Worksheets("Auftrag").Cells(2, 8).Value = "1100"
ElseIf O_WERK2 = True Then
Worksheets("Auftrag").Cells(2, 8).Value = "1020"
Else
Worksheets("Auftrag").Cells(2, 8).Value = "EagleEye"
End If
' Prio 9 = Range("I" & Spalte).Value = "Prio"
Worksheets("Auftrag").Cells(2, 9).Value = "3"
' Erstelldatum 10 = Range("J" & Spalte).Value = "Auftragsdatum" '10
Worksheets("Auftrag").Cells(2, 10).Value = Format(Now, "dd.mm.yyyy hh:mm")
' Kunde 11 = Range("K" & Spalte).Value = "Kunde"
Worksheets("Auftrag").Cells(2, 11).Value = "Kunde"
' Bearbeiter 12 = Range("L" & Spalte).Value = "Messtechniker"
Worksheets("Auftrag").Cells(2, 12).Value = "Messtechniker"
' Anlage 13 = Range("M" & Spalte).Value = "Messmaschine"
Worksheets("Auftrag").Cells(2, 13).Value = "Messmaschine"
' Programm 14 = Range("N" & Spalte).Value = "Messprogramm"
Worksheets("Auftrag").Cells(2, 14).Value = "Messprogramm Nr"
' Messzeit 15 = Range("O" & Spalte).Value = "T_Messen"
Worksheets("Auftrag").Cells(2, 15).Value = "1"
' Entscheidung / Status 16 = Range("P" & Spalte).Value = "Entscheidung"
Worksheets("Auftrag").Cells(2, 16).Value = "offen"
' Ergebnistext 17 = Range("Q" & Spalte).Value = "Ergebnistext"
Worksheets("Auftrag").Cells(2, 17).Value = "Bemerkung"
' Messdatum 18 = Range("R" & Spalte).Value = "Messdatum"
Worksheets("Auftrag").Cells(2, 18).Value = "Messdatum"
' Priobonus 19 = Range("S" & Spalte).Value = "Bonus"
Worksheets("Auftrag").Cells(2, 19).Value = "0"
' Reihenfolge 20 = Range("T" & Spalte).Value = "Reihenfolge" '20
Worksheets("Auftrag").Cells(2, 20).Value = Mid(auftragsNR, 5, 6)
' Wartezeit 21 = Range("U" & Spalte).Value = "Wartezeit"
Worksheets("Auftrag").Cells(2, 21).Value = "0"
' Gesamtdauer 22 = Range("V" & Spalte).Value = "Gesamtdauer"
Worksheets("Auftrag").Cells(2, 22).Value = "0"
' Ersteller 23 = Range("W" & Spalte).Value = "Ersteller"
Worksheets("Auftrag").Cells(2, 23).Value = Application.UserName
' ID 24 = Range("X" & Spalte).Value = "U-ID"
Worksheets("Auftrag").Cells(2, 24).Value = VBA.Environ("Username")
' Rechnername 25 = Range("Y" & Spalte).Value = "Rechnername"
Worksheets("Auftrag").Cells(2, 25).Value = VBA.Environ("ComputerName")
' Fertigungsauftragspos 26 = Range("Z" & Spalte).Value = "FAB-FAE"
Worksheets("Auftrag").Cells(2, 26).Value = newOrder.Combo_FA.Value
' Zeichnungsstand 27 = Range("AA" & Spalte).Value = "Zeichnungsstand"
Worksheets("Auftrag").Cells(2, 27).Value = newOrder.T_Zeichnung.Value
' Rüstzeit 28 = Range("AB" & Spalte).Value = "T_Rüsten" ' 28
Worksheets("Auftrag").Cells(2, 28).Value = "1"
' ******** Speichern, Werte in txt **************
Call txt_schreiben((nr), Dateipfad)
' ******* Kennwortschutz für das Arbeitsblatt
Sheets("Auftrag").Protect Password:=""
'Fenster schließen
Unload newOrder
End If
End Sub
Ich habe bereits versucht "Dim nr" auf den Datentyp Long abzuändern da es eine 6stellige Nummer ist. Macht jedoch keinen Unterschied.
"nr = txt_Auftrag("laden", Dateipfad) + 1"
hier habe ich versucht die Variablen typenunabhängig zu machen sprich nochmal einzeln einzuklammern.
Dateipfad ist im Übrigen ebenfalls als String definiert
Der Dateipfad der Datenbank wird auch nicht gefunden.
Vielen vielen Dank.