Wenn dann Makro
#1
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
Top
#2
nach ein wenig Rumspielen sieht es wie folgt aus, aber das läuft leider nicht

'Sub Maturity()
Dim Row As Long
Dim RowMax As Long
Dim n As Long

With Tickets
RowMax = .UsedRange.Rows.Count
n = 1

For Row = 2 To RowMax

If .Cells(Zeile, 13).Value = "Due" Then

    Range("A4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("B4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("C4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("D4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("E4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("F4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("G4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("H4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("I4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("I5").Select

.Rows(Row).Copy Destination:='Maturities BCEE'.Rows(n)
n = n + 1

End If
Next Row
End With
End Sub
Top
#3
Hallöchen,

- 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)
Top
#4
Ok, kleine Anpassung

'Sub Maturity()
Dim Row As Long
Dim RowMax As Long
Dim n As Long

With Tickets                                              (hier soll im Sheet Tickets von  der zweiten bis zur letzten Zeile die If Abfrage geprüft werden)
RowMax = .UsedRange.Rows.Countn = 1

For Row = 2 To RowMax                    

If .Cells(Row, 13).Value = "Due" Then         (hier soll geprüft werden, ob der Wert in Spalte 13 im Sheet Tickets "due" ist oder nicht)

    Range("A4").Select                                                           (dies sind die Werte, die ins Sheet "Maturities" kopiert werden sollen)
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("B4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("C4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("D4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("E4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("F4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("G4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("H4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("I4").Select
    ActiveCell.FormulaR1C1 = "=Tickets!R[-2]C[1]"
    Range("I5").Select

.Rows(Row).Copy Destination:='Maturities'.Rows(n)

End If
Next Row
End With
End Sub






https://www.ms-office-forum.net/forum/sh...ost2005720
Top
#5
Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.

https://www.clever-excel-forum.de/misc.php?action=help&hid=10

Gruß,
steve1da
Top
#6
Hallöchen,

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)
Top
#7
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?
Top
#8
Hallo

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.

mfg  Gast 123
Top
#9
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)
Top
#10
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.


Angehängte Dateien
.xlsx   Test.xlsx (Größe: 14 KB / Downloads: 1)
Top


Gehe zu:


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