Hallo, folgendes Problem habe ich: In dem Tab "tickets" sind diverse Geschäftsvorfälle (jeweils eine Zeile) vorhanden und es soll geschaut werden, ob der Wert der Spalte m "due" ist. Wenn dies der Fall ist sollen bestimmte Zellen aus dieser Zeile in ein anderes Tab "maturities" kopiert werden. (copy cell b2 von tab "tickets" to tab "maturities" a2, copy cell c2 von tab "tickets" to tab "maturities" b2 und so weiter, was alles benötigt wird) Im Anschluss soll halt im Tab "tickets" nach dem nächsten Wert "due" geschaut werden und in eine neue Zeile von tab "maturities" kopiert werden. Wie mache ich dies am besten? Danke für eure Hilfe
- wofür sind denn die Formeln in Deinem Code? - Einen in VBA verwendeten Ausdruck sollte man nicht als Schleifenzähler nehmen. Nenne ihn besser LRow ... - wo nimmst Du Zeile her? Sollte dort nicht Row stehen?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
ein Punkt weniger - wofür sind denn die Formeln in Deinem Code? - Einen in VBA verwendeten Ausdruck sollte man nicht als Schleifenzähler nehmen. Nenne ihn besser LRow ...
und dafür ein neuer - wo nimmst Du n her?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
meinst du dies hier? damit werden die Werte von einem Tab in einen anderen kopiert bzw. geschrieben ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]" Range("I5").Select
ok, dann nenne ich es mal um
n braucht man nicht. das habe ich noch zu viel drin oder?
aus der Aufgabe werde ich nicht richtig schlau, da stimmt m.E. so einiges Nicht!
Zunaechst bitte wie Schauan schon sagte KEINE VBA Schlüsselwörter für Variable verwenden! Row ist so ein Schlüsselwort! Ersetze die Variable Row bitte durch "Zeile", oder "ıRow".
Select benutzen Programmier nicht für diese Aufgabe! Besser ist es so: Range("A4:I4").FormulaR1C1 = "=Tickets!R[-2]C[1]" Dann fiel mir auf das die Formeln immer in Zeile 4 stehen, ihr aber die fortlaufend Zeile von 2 bis RowMax kopieren wollt. Das kann meines Erachtens auch nicht richtig klappen, oder sehe ich das falsch???
Mein Vorschlag: lade uns bitte eine kleine Beispieldatei mit Fantasiedaten und einer Lösung von Hand hoch, dann können wir sicher viel besser weiterhelfen. Da sieht man sofort was du erreichen willst und kann den Code optimieren.
09.11.2020, 17:25 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2020, 17:25 von schauan.)
Hallöchen,
dein n=1 hab ich erst mal gefunden, das ist bei Dir hoch gerutscht und zu ...Countn = 1 geworden im prinzip, wenn es immer in Zeile 1 mit dem Einfügen los gehen soll, so
Code:
Sub Maturity() Dim lRow As Long, lRowMax As Long, lN As Long lN = 1 With Sheet("Tickets") (hier soll im Sheet Tickets von der zweiten bis zur letzten Zeile die If Abfrage geprüft werden) lRowMax = .UsedRange.Rows.Count For lRow = 2 To lRowMax If .Cells(lRow, 13).Value = "Due" Then (hier soll geprüft werden, ob der Wert in Spalte 13 im Sheet Tickets "due" ist oder nicht) .Rows(lRow).Copy Destination:=Sheets("Maturities").Rows(lN) lN = lN + 1 End If Next Row End With End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
hier mal das Excel mit einer hoffentlich einfacheren Erklärung
In "Tickets" sind diverse Geschäftsvorfälle mit allen möglichen Daten zu den Geschäften der Kunden. Im "Maturites" Sheet sollen diese Geschäftsvorfälle angegeben werden, die ein "due" in Spalte F im Sheet "Tickets" haben. Das Datum wird im Sheet Maturities in Feld B2 eingegeben.
Also benötige ich ja eine Schleife, die im Sheet Tickets Spalte F durchgeht und prüft, ob das Feld "due" beinhaltet. Sofern dies der Fall ist, sollen lediglich einige der Daten in Sheet Maturities kopiert werden.
Bisher habe ich mir versucht das Ganze zusammenzukopieren.