Registriert seit: 13.11.2014
Version(en): 2010
22.06.2015, 10:48
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2015, 10:48 von Mike4711.)
Hallo Liebe Excelfreunde, ich habe in meiner Arbeitsmappe mit einem VBA-Code Probleme. Eigentlich weiss ich gar nicht, in welchem Code ich schauen muss. Bin kein Experte.....diesen Code habe ich auch nicht selbst geschrieben.
Testmappe.xlsm (Größe: 482,42 KB / Downloads: 10)
Es geht in dieser Mappe um Bestllungen für Etiketten. Diese kaufe ich ein, in Rollenlänge 500 und 1000 Die Artikelnummer des Lieferanten, wäre z.B.: 256110-124 hier ist die Rollenlänge 1000 Wir führen diesen Artikel mit der Erweiterung 256110-124-13/1000 hier ist die 1000 für uns die Angabe der Rollenlänge. Wenn ich in meiner Mappe bestelle, muss ich natürlich die Artikelnummer des Lieferanten in meinem Bestellformular einmtragen lassen und dann die passende Rollenlänge dazu. Die Bestellmaske ist so aufgebaut, das ich in den Combobox1 unsere Artikelnummer anwähle und in der Combobox2 die Artikelnummer vom Lieferanten angezeigt wird. Der Artikel wird dann in der Maske in der Listbox1 übertragen, mit der passenden Rollenlänge. Aber: Bevor ich die Bestellung über den Button "Als PDF speichern", schaue ich mir erst mein Verkaufsformular an, sehe dort, das die Rollenlänge richtig eingetragen ist. Schliesse dann die Bestellung ab und gehe dann zu meinem Bestllformular im Blatt "Einkauf_Etiketten" Dort kann ich nach meine Bestellung über dem Button "Bestellung suchen und zurückschreiben", die Bestellung in das Formular zurück schreiben, oder auch alle andern Bestllungen, die ich getätigt habe. Hier habe ich jetzt das Problem, das er die falsche Rollenlänge in das Formular unter Spalte E einträgt. Bestellnummer: 1505166-RO-6 Ich habe schon selbst im code gesucht, woran es liegt, aber ich finde einfach nicht, wo die Rollenlänge gesucht und übertragen wird. Ich hoffe hier von euch Hilfe zu bekommen. Im Anhang meine Mappe. Vielen Dank im Vorraus. Grüße Mike
Registriert seit: 11.04.2014
Version(en): Office 2007
22.06.2015, 13:03
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2015, 13:26 von Steffl.)
Hallo, Match findet den 'ersten' Treffer deiner Artikelnummern, und da sich die nicht unterscheiden, kann es der falsche Satz sein. Nachtrag: Und so Code: x = Application.Match(.Cells(i, 6).Value, Sheets("A&K").Columns("B"), 0)
könnte es eventuell passen.
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• Mike4711
Registriert seit: 13.11.2014
Version(en): 2010
(22.06.2015, 13:03)Steffl schrieb: Hallo Steffl,
in welchem Code soll diese Zeile stehen?
Wieso unterscheiden sich nicht die Artikelnummern?
unser Lieferant hat diese Artikelnummer: 297110-82
Wir führen den Artikel so: 297110-82-13/1000
Beim bestellen wird im Blatt "Umsätze Lieferanten" in Spalte C die Artikelnummer des Lieferanten abgespeichert. In Spalte D unsere....dieses macht er leider nicht.
im Blatt "Einkauf", wird die Bestellung über dem Button "Bestellung suchen und zurückschreiben" in das Bestellformular zurück geholt, Doch dort hat er in Spalte E ab Zeile 7 die falsche Rollenlänge.
Grüße Mike
Hallo,
Match findet den 'ersten' Treffer deiner Artikelnummern, und da sich die nicht unterscheiden, kann es der falsche Satz sein.
Nachtrag: Und so
Code: x = Application.Match(.Cells(i, 6).Value, Sheets("A&K").Columns("B"), 0)
könnte es eventuell passen.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Mike, ist relativ leicht zu finden. (22.06.2015, 10:48)Mike4711 schrieb: Dort kann ich nach meine Bestellung über dem Button "Bestellung suchen und zurückschreiben", die Bestellung in das Formular zurück schreiben, oder auch alle andern Bestllungen, die ich getätigt habe. hier geht eine Userform auf und im Click-Ereignis gehört meine gepostete Codezeile anstelle der bisherigen rein.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 13.11.2014
Version(en): 2010
(22.06.2015, 14:47)Mike4711 schrieb: (22.06.2015, 13:03)Hi,habe diese Zeile eingetragen, doch da meldet sich der Editor und markiert diese Zeile:.Cells(lngZ, 4) = wksL.Cells(x, 1).Value \Art.-Nr-MicGeht also so nicht. :(Grüße Mike Steffl schrieb: Hallo Steffl,
in welchem Code soll diese Zeile stehen?
Wieso unterscheiden sich nicht die Artikelnummern?
unser Lieferant hat diese Artikelnummer: 297110-82
Wir führen den Artikel so: 297110-82-13/1000
Beim bestellen wird im Blatt "Umsätze Lieferanten" in Spalte C die Artikelnummer des Lieferanten abgespeichert. In Spalte D unsere....dieses macht er leider nicht.
im Blatt "Einkauf", wird die Bestellung über dem Button "Bestellung suchen und zurückschreiben" in das Bestellformular zurück geholt, Doch dort hat er in Spalte E ab Zeile 7 die falsche Rollenlänge.
Grüße Mike
Hallo,
Match findet den 'ersten' Treffer deiner Artikelnummern, und da sich die nicht unterscheiden, kann es der falsche Satz sein.
Nachtrag: Und so
Code: x = Application.Match(.Cells(i, 6).Value, Sheets("A&K").Columns("B"), 0)
könnte es eventuell passen.
Registriert seit: 13.11.2014
Version(en): 2010
22.06.2015, 15:13
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2015, 15:29 von Mike4711.)
Habe diese Zeile eingefügt,
doch VBA meldet einen Fehler und geht zur Zeile:
.Cells(lngZ, 4) = wksL.Cells(x, 1).Value 'Art.-Nr-Mic
Gruß Mike
Registriert seit: 11.04.2014
Version(en): Office 2007
22.06.2015, 15:30
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2015, 15:32 von Steffl.)
Hallo Mike, wo hast Du die Zeile eingefügt (Modul u. Prozedur)? Und wie lautet der Fehler? Nachtrag: Und so Code: x = Application.Match(.Cells(i, 3).Value, Sheets("A&K").Columns("R"), 0)
hat die Zeile gelautet, bevor ich sie geändert habe. Findest Du es jetzt?
Gruß Stefan Win 10 / Office 2016
Registriert seit: 13.11.2014
Version(en): 2010
22.06.2015, 15:37
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2015, 15:39 von Mike4711.)
Hallo Steffl, in diesem Code: Code: Private Sub CommandButton2_Click() Dim lngZ As Long, lngL As Long, i As Long, x Dim wks As Worksheet, wksL As Worksheet Set wks = Sheets("Einkauf_Etiketten") If Me.ListBox1.ListCount > 0 Then Set wksL = Sheets("A&K") i = Me.ListBox1.ListCount - 1 With wks lngL = .Cells(31, 1).End(xlUp).Row .Cells(1, 7) = Date End With With Sheets("Bestellübersicht") lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 .Range(.Cells(lngZ, 1), .Cells(lngZ + i, 1)) = wks.Cells(1, 3) 'Bestellnummer .Range(.Cells(lngZ, 2), .Cells(lngZ + i, 4)) = wks.Range(wks.Cells(10, 2), wks.Cells(lngL + i, 4)).Value 'Art.-Nr.; Bezeichnung; Menge .Range(.Cells(lngZ, 5), .Cells(lngZ + i, 5)) = wks.Cells(4, 3) 'Lieferant .Range(.Cells(lngZ, 6), .Cells(lngZ + i, 6)) = wks.Cells(1, 7) 'Datum .Range(.Cells(lngZ, 7), .Cells(lngZ + i, 7)) = wks.Cells(3, 3) 'Ref.-Name .Range(.Cells(lngZ, 10), .Cells(lngZ + i, 10)).Value = wks.Range(wks.Cells(10, 4), wks.Cells(lngL + i, 4)).Value .Range(.Cells(lngZ, 16), .Cells(lngZ + i, 16)).Value = wks.Range(wks.Cells(10, 4), wks.Cells(lngL + i, 4)).Value .Range(.Cells(lngZ, 13), .Cells(lngZ + i, 13)).FormulaLocal = "=A" & lngZ & "&" & """#""" & "&B" & lngZ & "&" & """#""" & "&Text(F" & lngZ & ";" & """" & "TT-MM-JJJJ" & """" & ")" 'ID" .Range(.Cells(lngZ, 13), .Cells(lngZ + i, 13)).Value = .Range(.Cells(lngZ, 13), .Cells(lngZ + i, 13)).Value End With Bestellübersicht_Sortieren With Sheets("Umsätze Lieferanten") lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 For i = 10 To lngL x = Application.Match(wks.Cells(i, 2).Value, wksL.Columns("R:R"), 0) .Cells(lngZ, 1) = wks.Cells(1, 3) 'Bestellnummer .Cells(lngZ, 2) = wks.Cells(1, 7) 'Datum .Cells(lngZ, 3) = wks.Cells(i, 2).Value 'Art.-Nr. Liefrant .Cells(lngZ, 4) = wksL.Cells(x, 1).Value 'Art.-Nr-Mic .Cells(lngZ, 5) = wks.Cells(4, 3) 'Lieferant .Cells(lngZ, 6) = wks.Cells(i, 3) 'Bezeichnung .Cells(lngZ, 7) = wksL.Cells(x, 14).Value 'Rollengröße .Cells(lngZ, 8) = wksL.Cells(x, 3).Value 'Währung .Cells(lngZ, 9) = wksL.Cells(x, 4).Value 'EK-Stück .Cells(lngZ, 10) = wksL.Cells(x, 6).Value 'Inhalt große Box .Cells(lngZ, 11) = wksL.Cells(x, 8).Value 'Box Preis groß .Cells(lngZ, 12) = wks.Cells(i, 4).Value 'Bestellmenge .Cells(lngZ, 13) = wks.Cells(i, 7).Value 'Bestellsumme .Cells(lngZ, 17) = wks.Cells(3, 3) 'Ref.-Name lngZ = lngZ + 1 Next i End With UmsatzTabelle_Sortieren SpeichernAlsPDF2 wks.Range("A10:G31").ClearContents boVar = True Me.TextBox1.Enabled = True Me.TextBox1 = "" Me.TextBox2 = "" Me.TextBox3 = "" Me.TextBox1.SetFocus For i = 1 To 3 Me.Controls("ComboBox" & i).ListIndex = 0 Next i Me.CommandButton2.Visible = False Me.CommandButton4.Visible = False boVar = False Me.Tag = 0 ThisWorkbook.Save End If End Sub
Als erstes meldet Excel "Typen unverträglichkeit" Danach geht es zum VBA-Editor und er markiert in dem Code diese Zeile: .Cells(lngZ, 4) = wksL.Cells(x, 1).Value 'Art.-Nr-Mic Gruß Mike
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo,
wenn ich das richtig sehe, dann ist x im Makro als Variant deklariert. Im Code wird das x aber dann als Integer-Wert oder Long-Wert gebraucht bzw. eingesetzt..
Registriert seit: 13.11.2014
Version(en): 2010
(22.06.2015, 15:49)Käpt schrieb: Hallo,
wenn ich das richtig sehe, dann ist x im Makro als Variant deklariert. Im Code wird das x aber dann als Integer-Wert oder Long-Wert gebraucht bzw. eingesetzt.. Hallo, was es mit dem X auf sicht hat, kann ich dir leider nicht sagen. Ich habe diesen Code nicht erstellt. (Ist von Atilla) Leider habe ich auch nicht genug oder sehr wenig Kenntnisse mit VBA. Gruß Mike
|