Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Am Sonntag (23.09.) wird das Forum zwischen 06:00 Uhr und 09:00 Uhr kurzzeitig nicht erreichbar sein. Wir stellen auf SSL / HTTPS um.


Probleme mit bestehendem Code
#1
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.


.xlsm   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
Antwortento top
#2
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 7 / Office 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
  • Mike4711
Antwortento top
#3
(22.06.2015, 12: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.
Antwortento top
#4
Hallo Mike,

ist relativ leicht zu finden.

(22.06.2015, 09: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 7 / Office 2007
Antwortento top
#5
(22.06.2015, 13:47)Mike4711 schrieb:
(22.06.2015, 12: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.
Antwortento top
#6
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
Antwortento top
#7
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 7 / Office 2007
Antwortento top
#8
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
Antwortento top
#9
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..
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

[Bild: schulbild3.jpg]
Antwortento top
#10
(22.06.2015, 14: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
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste