Anzeige
Archiv - Navigation
1096to1100
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spalten-kopier-Makro - Spät erkannte Probleme

Spalten-kopier-Makro - Spät erkannte Probleme
Tanja
Hallo zusammen,
in diesem Thema https://www.herber.de/forum/archiv/1092to1096/t1094084.htm hatte Erich mir ein Makro geschrieben (siehe Beitrag vom 06.08.2009 21:59:53), welches Spalten kopiert.
Klappte beim Testen super!
Nun klappt es aber nichtmehr soooo toll und ich habe schon vergebens nach einem Fehler gesucht, was bei meinen VBA-Kenntnissen allerdings sehr dürftig ist.
Es geht um Folgendes:
Da ich nur die Werte benötige, wende ich das Makro "SpalteKopieVal" an. Allerdings kopiert das Makro nicht in die erste freie Spalte, sondern manchmal erst 3-4 Spalten dahinter.
Ich habe schon so vieles probiert. Ich habe die Zellen in meinem zu-kopierenden-Bereich gelöscht, anschließend gespeichert, das Makro neugestartet --> selber Fehler. Auch habe ich die verbundenen Zellen aufgelöst. Daran lag es dann aber auch nicht.
Darüber hinaus überschreibt es manchmal bereits kopierte Spalten. Kann mir jemand das erklären oder vielleicht helfen, wo ich was ändern müsste?
Vielleicht liest Erich ja selbst mit und hat eine Idee? :)
Viele Grüße,
Tanja
AW: Spalten-kopier-Makro - Spät erkannte Probleme
17.08.2009 16:42:47
fcs
Hallo Tanja,
eigentlich funktionierte Erichs Lösung in meiner Testdatei auch reibungslos.
Warum bei dir manchmal die falsche Spalte in der Zieltabelle angesteuert wird.?
Ich hab mal eine andere Routine zur Ermittlung der letzten Spalte mit Daten eingefügt.
Außerdem kann meine angepasste Lösung auch mehrere benachbarte Spalten auf einmal übertragen.
Gruß
Franz
Sub SpaltKop()
'Tabellennamen und Bereiche in dieser Routine anpassen
Sheets("Tabelle1").Activate
Application.ScreenUpdating = False
SpalteKopieVal wksZiel:=Worksheets("Tabelle1"), _
wksQuelle:=Worksheets("Tabelle2"), strSpalteQuelle:=("J:K")
SpalteKopieVal wksZiel:=Worksheets("Tabelle1"), _
wksQuelle:=Worksheets("Tabelle3"), strSpalteQuelle:=("C:C")
Application.ScreenUpdating = True
ActiveCell.Select
End Sub
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  0 Then
LetzteSpalteBlatt = Spalte
Exit For
End If
Next
End With
End Function

Anzeige
Wurm im Spalten-Kopier-Makro?!
18.08.2009 08:53:08
Erich
Hi Tanja,
da scheint ja noch ein einigermaßen dicker Wurm im Modul zu sein.
Einen Fehler habe ich gefunden - aber der kann das von dir beschriebene Fehlverhalten nicht verursachen.
In den beiden Prozeduren wurde zweimal lngCol mit .Rows.Count verglichen statt mit .Columns.Count.
Das sollte aber nur nur zu einem Programmabsturz führen.
Diese Korrektur ist also jetzt gar nicht wichtig, ich werde sie später schicken,
wenn auch die wirklichen Fehler (hoffentlich) geklärt sind.
Anscheinend liefert die Funktion LetzteSpalteBer manchmal falsche Ergebnisse.
Mich würde schon sehr interessieren, wie diese beiden Fehler zustande kommen.
"kopiert das Makro nicht in die erste freie Spalte, sondern manchmal erst 3-4 Spalten dahinter"
und
"überschreibt es manchmal bereits kopierte Spalten"
Hast du eine Beispielmappe, an der ich das sehen kann?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Spalten-kopier-Makro - Spät erkannte Probleme
18.08.2009 09:03:06
Klaus-Dieter
Hallo Tanja,
sieh mal, ob dir mein Programm Tabellenauszug weiter hilft.
Viele Grüße Klaus-Dieter

Online-Excel
AW: Spalten-kopier-Makro - Spät erkannte Probleme
18.08.2009 11:47:11
Tanja
Guten Morgen allerseits,
entschuldigung, dass ich erst jetzt zu einer Antwort komme:
@ Erich: Immer, wenn ich dir eine Beispielmappe bauen möchte, dann funktioniert alles einwandfrei! :(
@ Klaus-Dieter: Das Programm könnte mir auf jeden Fall weiterhelfen, aber es muss (soweit ich das überblicke) zu viel angepasst werden. Aber trotzedm vielen Dank! :)
@ Franz (fcs): Dein Makro klappt :)
Ließe es sich noch einbauen, dass überprüft wird, ob diese Daten so in der Form schon vorhanden sind? Dass nichts doppelt kopiert wird?
Und ich habe in der zu kopierenden Spalte in Zeile 7 (in einer Ausnahme in Zeile 6) ein Datum stehen. Kann das Makro die kopierten Spalten anschließend auch nach Datum sortieren? Oder wäre das zu viel des Guten? Wäre auf jeden Fall "nice to have". :)
Ihr habt mich aber schon alle sehr glücklich gemacht! :)))
Noch eine kurze Frage:
Muss ich jedes Mal, wenn eine Spalte von einem anderen Sheet kopiert werden soll, diese Anweisung stehen?
Sheets("Tabelle1").Activate
Application.ScreenUpdating = False
Also erst werden Daten aus Tabelle1 nach hinten kopiert, dann Daten aus Tabelle2, usw. Muss ich vorher jedes Mal das Sheet aktivieren?
Viele, dankbare Grüße!
Tanja
Anzeige
AW: Spalten-kopier-Makro - Spät erkannte Probleme
18.08.2009 13:09:20
fcs
Hallo Tanja,
zu deinen Fragen:
Ließe es sich noch einbauen, dass überprüft wird, ob diese Daten so in der Form schon vorhanden sind? Dass nichts doppelt kopiert wird?
Im Prinzip ja, aber woran kann man erkennen, dass die zu kopierenden Daten schon vorhanden sind? 1 zu 1 Vergleich aller Daten in den Spalten?
Und ich habe in der zu kopierenden Spalte in Zeile 7 (in einer Ausnahme in Zeile 6) ein Datum stehen. Kann das Makro die kopierten Spalten anschließend auch nach Datum sortieren? Oder wäre das zu viel des Guten? Wäre auf jeden Fall "nice to have". :)
Auch hier im Prinzip ja, aber alle Datumsangaben müssten dann in einer Zeile stehen.
Sub SortSpalte()
Dim wksZiel As Worksheet, Spalte_1 As Long, ZeileSort As Long
Set wksZiel = Worksheets("Tabelle1")
Spalte_1 = 4 'erste Spalte des Sortierbereichs ggf. anpassen
ZeileSort = 7 'Zeile nach der Sortiert werden soll
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
Noch eine kurze Frage:
Muss ich jedes Mal, wenn eine Spalte von einem anderen Sheet kopiert werden soll, diese Anweisung stehen?
Sheets("Tabelle1").Activate
Application.ScreenUpdating = False
Also erst werden Daten aus Tabelle1 nach hinten kopiert, dann Daten aus Tabelle2, usw. Muss ich vorher jedes Mal das Sheet aktivieren?

Bei der von mir erstellten Version kannst du
Sheets("Tabelle1").Activate
weglassen. Es ist auch egal von welchem Blatt aus du das Makro startest.
Die Zeile
Application.ScreenUpdating = False
sollte vor dem 1. Kopiervorgang stehen
Nach dem letzten Kopiervorgang
Application.ScreenUpdating = True
Diese beiden Zeilen verhindern, dass die Bildschirmanzeige während der Makroausführung "flackert" und das Makro ist auch schneller in der Ausführung.
Gruß
Franz
Anzeige
AW: Spalten-kopier-Makro - Spät erkannte Probleme
18.08.2009 13:21:04
Tanja
Hallo Franz,
das ging ja fix! Ich danke dir!
Zu deiner Frage:
Ließe es sich noch einbauen, dass überprüft wird, ob diese Daten so in der Form schon  _
vorhanden sind? Dass nichts doppelt kopiert wird?
Im Prinzip ja, aber woran kann man erkennen, dass die zu kopierenden Daten schon vorhanden sind? 1 zu 1 Vergleich aller Daten in den Spalten?

Ja, hätte an einen 1 zu 1 Vergleich gedacht. Aber das würde den Rahmen sprengen, oder? Lassen wir das lieber.
Ich danke dir für deine Anmerkung - so langsam lerne ich ein wenig dazu :)
Lässt sich das Sortieren-Makro auch ine ien Routine einbauen? Habs grad ähnlich versucht wie bei dem kopier-Makro, bin aber gescheitert.
Nochmal vielen, vielen, Dank! :)
Tanja
Anzeige
AW: Spalten-kopier-Makro - Spät erkannte Probleme
18.08.2009 15:29:47
fcs
Hallo Tanja,
Lässt sich das Sortieren-Makro auch ine ien Routine einbauen? Habs grad ähnlich versucht wie bei dem kopier-Makro, bin aber gescheitert.

Eigentlich schon
Füge nach den Kopiervorgängen die folgende Zeile ein, um das Sortiermakro aufzurufen.
Call SortSpalte
Im Sortiermakro muss du natürlich den Tabellennamen und ggf. die Startspalte für das Sortieren anpassen.
Gruß
Franz
Einfach klasse! :) Was macht denn das Makro, ...
18.08.2009 15:55:57
Tanja
... wenn ein Datum mehrfach vorkommt?
Vielen Dank und noch einen wundervollen Tag!
Tanja
AW: Was macht denn das Makro, ...
18.08.2009 17:41:04
fcs
....
... wenn ein Datum mehrfach vorkommt?

Dann werden die Spalten wie die anderen auch sortiert, wobei die Reihenfolge der Spalten mit gleichem Datum so ist wie in der unsortierten Tabelle.
Gruß
Franz
Anzeige
Wunderbar!
18.08.2009 17:45:10
Tanja
Ja, das habe ich nun auch festgestellt. Hatte vorher einen Fehler in der Routine, sodass er das Datum nur einmal sortiert hatte. :)
Nochmals vielen, vielen, vielen, ... Dank!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige