Ich kriegs nicht hin :(
12.10.2009 08:24:58
Tanja
Guten Morgen und vielen Dank schonmal für die Vorschläge!
Allerdings bin ich ein wenig blöd, das Makro so anzupassen, dass ich damit arbeiten kann :(
Deswegen versuche ich euch mal zu zeigen, was ich bisher habe, vielleicht könnt ihr mir ja dann helfen es umzustricken?
Hier ist ein Auzug aus meiner Routine. Da es nciht nur um einen Kopiervorgang geht, trage ich hier alles ein, was auf einmal kopiert werden soll:
Sub SpaltKopv2()
'Tabellennamen und Bereiche in dieser Routine anpassen
Sheets("Tabelle1").Activate
Application.ScreenUpdating = False
SpalteKopieVal wksZiel:=Worksheets("Tabelle1"), _
wksQuelle:=Worksheets("Tabelle1"), strSpalteQuelle:=("G:G")
Call SortSpalteTabelle1
SpalteKopieVal wksZiel:=Worksheets("Tabelle2"), _
wksQuelle:=Worksheets("Tabelle2"), strSpalteQuelle:=("F:F")
Call SortSpalteTabelle2
Application.ScreenUpdating = True
ActiveCell.Select
End Sub
Als nächstes ist hier der Kopierbefehl (kopiert nur die Werte - so sollte es auch bleiben :)) :
Sub SpalteKopieVal(wksZiel As Worksheet, wksQuelle As Worksheet, _
strSpalteQuelle As String)
' Kopiert Werte von wksQuelle nach wksZiel hinter die letzte Spalte
Dim lngCol As Long
With wksZiel
lngCol = LetzteSpalteBlatt(wksZiel)
If lngCol + wksQuelle.Range(strSpalteQuelle).Columns.Count
Dazu gehört das Teil, das die erste freie Spalte berechnet:
Function LetzteSpalteBlatt(wks As Worksheet)
' Letzte Spalte im Zeilenbereich lngZVon:lngZBis
Dim Spalte As Long
LetzteSpalteBlatt = 1
With wks
For Spalte = .Cells.SpecialCells(xlCellTypeLastCell).Column To 1 Step -1
If Application.WorksheetFunction.CountA(.Columns(Spalte)) > 0 Then
LetzteSpalteBlatt = Spalte
Exit For
End If
Next
End With
End Function
Und ganz zum Schluss habe ich noch das Makro, dass die Spalten dann noch nach dem Datum aufsteigend sortiert:
Sub SortSpalteDiff()
Dim wksZiel As Worksheet, Spalte_1 As Long, ZeileSort As Long
Set wksZiel = Worksheets("Tabelle1")
Spalte_1 = 9 'erste Spalte des Sortierbereichs ggf. anpassen (hier: I)
ZeileSort = 7 'Zeile nach der Sortiert werden soll (z.B. Zeile 7 für Datum)
With wksZiel
With .Range(.Columns(Spalte_1), .Columns(.Cells(ZeileSort, _
.Columns.Count).End(xlToLeft).Column))
.Sort Key1:=.Cells(ZeileSort, .Column), order1:=xlAscending, Header:=xlNo, _
Orientation:=xlLeftToRight
End With
End With
End Sub
Wie krieg ich denn jetzt die Abfrage dazwischen, ohne dass ich für jede Tabelle ein anderes Kopiermakro benötige?
Und wie bekomme ich es hin, dass alle Werte, inkl. Datum, auch überschrieben werden, wenn das Datum schon vorhanden ist und ich es in dem Makro bestätige?
Habe mein Makro gerade dazwischenpacken wollen, so wie es im Kommentar steht, aber es kann ja gar nciht funktionieren, weil alles in meiner Routine ja ganz anders benannt ist. :(
Ich kann gleich einmal eine Beispieltabelle basteln, falls es hilft.
Wäre sehr froh, wenn ihr mir weiterhin helfen könntet!
Einen guten Start in die Woche wünscht
Tanja