2017-06-26 3 views
0

Ich habe ein neues Projekt Userform in einer neuen Arbeitsmappe erstellt und den Code unten aus einem anderen Projekt kopiert, das perfekt mit diesem Code funktioniert. Ich habe den Code in dieses neue Arbeitsmappenprojekt kopiert, bekomme aber immer noch den Laufzeitfehler, auch nachdem ich den Textfeldnamen geändert habe.Excel VBA 2016 32bit - Userform - Runtime Fehler 9 - Fehlermeldung "Script außerhalb des Bereichs"

Der Zweck des Codes ist automatisch eine Auftragsnummer in der Textbox txt_Work_Order_No von „SWC“ und dann nach Jahr, Monat und dann das Zahlenformat voran zu erzeugen. Die endgültige Ausgabe sollte wie folgt aussehen: SWC201706-00001 (jedes Mal, wenn das Formular geöffnet wird, wird die Ausgabe erhöht).

Private Sub UserForm_Initialize() 
'** WORK ORDER NUMBER IN TEXTBOX 

        Me.txt_Work_Order_No.Enabled = True 
         Dim irow As Long 
         Dim ws As cnServiceLog 
         Set ws = cnServiceLog 

         'find last data row from database' 
         irow = ws.Cells(Rows.Count, 1).End(xlUp).Row 
         Me.txt_Work_Order_No = "SWC" & Year(Date) & Format(Month(Date), "00") & "-" & Format(Split(ws.Cells(irow, 1).Value, "-")(1) + 1, "00000") 

Ich trat den Code durch, und brach auf den Code Zeile nach unten, die mir Kummer gab und ich bemerkte den Rest davon aus und alles war in Ordnung, aber natürlich wird es nicht will ich es möchte machen.

Der Bereich, der den Laufzeitfehler verursacht, ist direkt nach dem Doppel-Null (Monat (Datum, "00")

Me.txt_Work_Order_No = "SWC" & Jahr (Datum) & Format (Monat (Date), "00") & "-" & Format (Split (ws.Cells (IRow, 1) .Value, "-") (1) + 1, "00000")

ich hoffe, jemand würde in der Lage sein, mir zu helfen .... Ich habe das Internet seit Tagen durchsucht und bin immer noch nicht in der Lage, das Problem zu lösen, das es zu haben scheintMit Dankbarkeit, TheShyButterfly

+0

Nur eine kurze Überprüfung - wenn Sie es so machen, würde es funktionieren? 'Me.txt_Work_Order_No =" SWC "& Jahr (Datum) & Format (Monat (Datum)," 00 ") &" - ​​"& Format (Split (ws.Cells (irow, 1) .Value," - ") (0) + 1, "00000") ' – Vityata

+0

Vielen Dank für Ihre schnelle Antwort. Was Sie vorgeschlagen haben, ist genau das, was ich habe, aber es funktioniert nicht. Der Code ist auf seiner eigenen vollen Linie (nicht so verpackt, wie es scheint, hier zu sein) Ich kann nicht verstehen, warum es mich Kummer verursacht. Es funktioniert perfekt in dem anderen Projekt. Zuerst dachte ich, es war, weil ich zuvor auf Excel 2016 64bit war (was mir Kummer gab, weil das Projekt ursprünglich auf 32bit 2013 entwickelt wurde), so habe ich 64bit deinstalliert und Excel 32bit installiert .. aber das Problem bleibt – TheShyButterfly

+0

Es ist nicht das, was Sie habe, habe ich '(1)' in '(0)' in Ihrem Code geändert. Verwenden Sie dies, um die Unterschiede zu sehen http://www.textdiff.com/ – Vityata

Antwort

0

Im Allgemeinen nehme ich an, dass das Problem, dass, wenn Sie ws.Cells(irow,1) aufgeteilt, Sie haben keinen - Wert. Sie gehen also außerhalb der Reichweite des Arrays. Versuchen Sie, wie diese erste:

Me.txt_Work_Order_No = "SWC" & Year(Date) & Format(Month(Date), "00") & "-" & Format(Split(ws.Cells(irow, 1).Value, "-")(0) + 1, "00000")

Wenn es funktioniert, dann versuchen, eine Variable zu setzen für den (0) Wert, bezogen auf die UBound des Arrays. Etwas wie folgt aus:

Dim lngUbound as long 
lngUbound = ubound(Split(ws.Cells(irow,1),"-") 
Me.txt_Work_Order_No = "SWC" & Year(Date) & Format(Month(Date), "00") & "-" & Format(Split(ws.Cells(irow, 1).Value, "-")(lngUbound) + 1, "00000") 

Die Idee des obigen Code ist, dass Sie nicht zu raten, dass Sie immer mindestens ein - haben, also wenn Sie mit diesem Zeichen aufgeteilt, Sie immer den letzten Punkt des erstellt Array. Spiele ein bisschen mit dem Code, es sollte funktionieren.

+0

Ich entschuldige mich für meine verzögerte Antwort. Vielen Dank für Ihre Anregungen und Ihre Zeit. Ich werde tatsächlich damit herumspielen und sehen, wie es funktioniert. – TheShyButterfly

Verwandte Themen