jetzt habe ich verstanden wo der Fehler war. Ich habe jetzt eine neu Tabelle erstellt und den Code teilweise angepasst.
Kannst du mir jetzt zeigen wie ich in der listbox die Gelb markierten Zellen sehe. Bitte bedenke, das bei 62 und 63 entweder oder sein soll.
Dann möchte ich auch die Daten welche in der Listbox stehen in die Ziel Tabelle übertragen und zwar wie folgt:
Q14 --> Zi7 Q21 --> Z18 Q22 --> Z11 Q24 --> Z35 Q25 --> Z13 Q29 --> Z36 Q30 --> Z37 Q32 --> Z38 Q38 --> Z30 Q39 --> Z31 Q42 --> Z29 Q62 --> Z8 (Wenn aber in Q62 im wert nach 7 Zeichen folgendes Kommt "PF80..." kommt dann soll der wert aus Q63 genommen werden) Q63 --> Z8 siehe Q62 Q64 --> Z19
weiter hin soll in die Z2 eine "9" rein geschrieben werden und in die Z47 das datum an dem die Übertragung erfolgte
Letzes währe noch das die Combox keine gleich Bestellungen zeigt
PS: die viele Zellen in meine Original quelle Tabelle sind teilweise zugeklappt, wenn das ein Problem ist soll das Makro die Zelle automatisch aufklappen und wieder nach der Übertragung in die Ursprungslage bringen.
25.05.2020, 13:52 (Dieser Beitrag wurde zuletzt bearbeitet: 25.05.2020, 13:53 von Steffl.)
Hallo,
(25.05.2020, 10:18)Pirat2015 schrieb: Letzes währe noch das die Combox keine gleich Bestellungen zeigt
versuche es mal so
Code:
Private Sub UserForm_Initialize() 'Variablendeklarationen - Integer (%) 'Wieso Interger? Eine Tabelle hat doch mehr als 32.767 Zeilen! Dim iCnt% Dim objDic 'Zaehler auf 4 setzen iCnt = 18 Set objDic = CreateObject("scripting.dictionary") 'Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt Do While Cells(iCnt, 38) <> "" 'Wenn der Zellinhalt unterschiedlich zum vorherigen Eintrag ist, dann in Combo uebernehmen If Not objDic.exists(Cells(iCnt, 38).Value) Then objDic(Cells(iCnt, 38).Value) = objDic(Cells(iCnt, 38).Value) + 1 'Schleifenzehler hochsetzen iCnt = iCnt + 1 'Ende Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt Loop Me.ComboBox1.List = objDic.keys Set objDic = Nothing End Sub
25.05.2020, 14:59 (Dieser Beitrag wurde zuletzt bearbeitet: 27.05.2020, 07:11 von Kuwer.)
Hallo Steffl,
danke, das läuft jetzt.
Zitat:Das andere habe ich nicht verstanden.
Zurzeit sehe ich in der Listbox nur 7 Daten und zwar von A bis G, ich möchte aber in der ListBox 14 Daten sehen und zwar nicht von A bis G sondern quer durcheinander, dann möchte ich das diese Daten auch in die Ziel Tabelle importiert werden und zwar so wie ich hier geschrieben habe
Q14 --> Zi7 Q21 --> Z18 Q22 --> Z11 Q24 --> Z35 Q25 --> Z13 Q29 --> Z36 Q30 --> Z37 Q32 --> Z38 Q38 --> Z30 Q39 --> Z31 Q42 --> Z29 Q62 --> Z8 (Wenn aber in Q62 im wert nach 7 Zeichen folgendes Kommt "PF80..." kommt dann soll der wert aus Q63 genommen werden) Q63 --> Z8 siehe Q62 Q64 --> Z19
weiter hin soll in die Z2 eine "9" rein geschrieben werden und in die Z47 das datum an dem die Übertragung erfolgte
für mich war deine Erklärung schon verwirrend, Was meint er mit Q14, Q22, Q24 usw. Sind damit Zellen gemeint? Erst nach mehrmaligen Lesen und den Code vergleichen, bin ich jetzt der Meinung, Du meintest damit Spalten. Wenn ja, versuche es mal so
Zitat:für mich war deine Erklärung schon verwirrend, Was meint er mit Q14, Q22, Q24 usw. Sind damit Zellen gemeint?
Damit sind die Zellen in der Quelle Tabelle gemeint, Quelle Tabelle Zelle 14 oder N --> Ziel Tabelle Zelle 7 oder G und so weiter Q21 --> Z18 Q22 --> Z11 Q24 --> Z35 Q25 --> Z13 Q29 --> Z36 Q30 --> Z37 Q32 --> Z38 Q38 --> Z30 Q39 --> Z31 Q42 --> Z29 Q62 --> Z8 (Wenn aber in Q62 im wert nach 7 Zeichen folgendes Kommt "PF80..." kommt dann soll der wert aus Q63 genommen werden) Q63 --> Z8 siehe Q62 Q64 --> Z19
Ich bekomme hier zwei Fehler
Index außerhalb des gültigen bereich, fehler kommt hier:
Code:
vntSpalten = Array(14, 21, 22, 24, 25, 29, 30, 32, 38, 39, 42, 62, 63, 64) 'Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt lngC = WorksheetFunction.CountIf(Columns(38), Me.ComboBox1.Value) ReDim vntArray(0 To lngC - 1, 0 To UBound(vntSpalten)) --> hier kommt der Fehler Do While Cells(icnt1, 38) <> "" 'Wenn der Zellinhalt der Auswahl entspricht, dann If Cells(icnt1, 38).Value = Val(Me.ComboBox1.Value) Then
Und zweiter fehler ist
Unzulässige Verwendung des Schlüsselworts Me
Code:
Option Explicit
Private Sub UserForm_Initialize() Dim icnt1%, icnt2%, arrTemp 'Array fuer ersten Eintrag vorbereiten ReDim arrTemp(12, 0) 'Schleife ueber alle Zeilen For icnt1 = 0 To 3 'Schleife ueber alle Spalten For icnt2 = 0 To 12 'Zeile hinzufuegen arrTemp(icnt2, icnt1) = Cells(icnt2 + 1, icnt1 + 1) 'Ende Schleife ueber alle Spalten Next 'Array fuer naechsten Eintrag vorbereiten If icnt1 < 3 Then ReDim Preserve arrTemp(12, icnt1 + 1) 'Ende Schleife ueber alle Zeilen Next 'Array in Listbox uebernehmen Me.ListBox1.List = arrTemp --> Wird hier angezeigt End Sub
zum zweiten Fehler: Sorry, das Makro von André habe ich als Beispiel für mich in deine Datei kopiert, damit ich dein Makro umbauen konnte. Das kannst Du aus dem allgemeinen Modul rauslöschen.
zum ersten Fehler: Welchen Wert hat die Variable lngC zum Zeitpunkt des Fehlers?
und noch was
Zitat:Quelle Tabelle Zelle 14 oder N --> Ziel Tabelle Zelle 7 oder G und so weiter