Hallo Murdoc,
danke noch mal für das "hyperlink-macro"
bei diesem hier erhalte ich einen Laufzeitfehler, Anwendungs- oder objektbezogen. das heisst, das ich sheet-Namen oder irgendwelche Bezüge nicht richtig angepasst habe oder?
grundsätzlich suche ich ja nach einem loop, der mein macro immer wieder abspiel, aber immer eine zeile nach unten geht. dann den loop stoppen mit bedingung oder so.
liebe grüsse
Murdoc schrieb am 16.07.2009 12:28:56:
Hallo Marco,
ich habe mal eine kleines Beispiel zusammengestellt. Eventuell musst du es noch ein bisschen an deine Bedürfnisse anpassen. Die Anzahl der Zeilen wird dynamisch bestimmt. Es werden alle Zeilen durchlaufen und in die gewünschte Tabelle kopiert.
Sub Zellen_Kopieren()
Dim c As Range
Dim letzteZeile As Integer
Dim ZaelZeile As Integer
letzteZeile = Worksheets("Journal").Cells(Rows.Count, 2).End(xlUp).Row
'Voraussetzung es ist immer Spalte A für einen Eintrag vorhanden
ZaelZeile = 1
With Worksheets("Journal")
For Each c In .Range(Cells(1, 1), Cells(letzteZeile, 1))
If .Cells(c.Row, 2) = "Kreditoren" Then
.Range(Cells(c.Row, 2), Cells(c.Row, 6)).Copy
Worksheets("macrokreditoren").Cells(ZaelZeile, 1).PasteSpecial Paste:=xlPasteValues
ZaelZeile = ZaelZeile + 1
Application.CutCopyMode = False
End If
Next c
End With
End Sub
Gruß
mister-macro schrieb am 16.07.2009 08:23:25:
Hey Jürgen,
ja das ist wahr, es swahr ein Laufzeitfehler, eben wahrscheinlich wegen dem "Range".
Aber irgendwie funktioniert der Code nicht wie er soll. ich möchte ja im Journal die Zellen "B8 bis F8" kopieren, aber nur falls in den ersten beiden Zellen B8/C8 "Kreditoren" steht.
Da ich das für etwa 30 Zeilen machen muss, muss ich den Code immer wiederholen (+dann für div.sheets das selbe), und der nächste wäre dann IF B9/C9 = "Kreditoren" dann kopiere C9 bis F9. Die kopien sollen in "macrokreditoren" eingefühgt werden, von dort aus mache ich einen direkten Zellbezug in das Sheet Kreditoren.
Wie kann ich diesen Code vereinfachen, so das ich nicht jede Zeile anpassen muss, sondern mit einer art loop oder eben steps befehelen kann, er soll immer eine Zeile rutschen, von Zeile 8 bis 30.
momentan kopiert er mir mit den steps die zeile irgendwo hin mit unregelmässigen abständen.
danke!
der original code wäre:
Sub Kreditoren_zeile1()
For i = 2 To 3
If Worksheets("Journal").Cells(8, i) = "Kreditoren" Then
Dim Loletzte As Long
With Worksheets("macrokreditoren")
Loletzte = IIf(IsEmpty(.Range("A65536")), _
.Range("A65536").End(xlUp).Row + 1, 65536)
Sheets("Journal").Range("B8:F8").Copy
.Cells(Loletzte, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End With
End If
Next
End Sub
Sub Kreditoren_zeile2()
For i = 2 To 3
If Worksheets("Journal").Cells(9, i) = "Kreditoren" Then
Dim Loletzte As Long
With Worksheets("macrokreditoren")
Loletzte = IIf(IsEmpty(.Range("A65536")), _
.Range("A65536").End(xlUp).Row + 1, 65536)
Sheets("Journal").Range("B9:F9").Copy
.Cells(Loletzte, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End With
End If
Next
End Sub
etc......
---------------------------
jh schrieb am 15.07.2009 16:33:09:
Hallo,
es wäre immer sehr hilfreich, wenn du schon eine Fehlermeldung bekommst,
dass du uns verrätst was für eine und in welcher Zeile. Das Weglassen der
Laufvariablen hinter Next ist aber eher eine lässliche Sünde und in VBS sogar
normal :-)
Sheets("Journal").Range(steps, j).Copy
ist aber eine fehlerhafte Adressierung des Range-Object. Statt Range gehört
hier Cells hin.
Gruß Jürgen
|