Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
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

Makro: Werte kopieren

Makro: Werte kopieren
11.04.2016 08:10:04
mucki4
Grüßt euch,
ich hab da ein kleines Problem mit meinem Makro und komme nicht weiter.
Es geht darum, dass, wenn eine If Abfrage mit nein beantwortet wird, ein gewisser Teil kopiert und unten drunter wieder eingefügt werden soll. Habe das ganze in einem seperaten Modul getestet, da hat es wunderbar funktioniert. Beim Versuch das Ganze dann in meinen großen Code einzufügen, der ausgelöst wird wenn eine andere Tabelle gespeichert wird, scheitere ich irgendwie. Die entscheidende Stelle sieht wie folgt aus:
Workbooks("Berechnungstabelle 2.xlsm").Sheets("Hallenlayout").Activate
Cells.Select
Selection.Find(What:=Karossentakt, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ZielZeileL = ActiveCell.Row
ZielSpalteL = ActiveCell.Column
Cells(ZielZeileL + 1, ZielSpalteL).Activate
If Bez ActiveCell.Text Then
Range(ActiveCell.Offset(-1, -1), ActiveCell.Offset(9, 3)).Copy
Cells(ZielZeileL + 12, ZielSpalteL - 1).Activate
ActiveSheet.Paste

Range(ActiveCell.Offset(3, 1), ActiveCell.Offset(10, 6)).ClearContents
Else: Range(ActiveCell.Offset(3, 0), ActiveCell.Offset(9, 3)).ClearContents
End If
"Bez" ist eine Variable aus der anderen Tabelle, die er aber glaube ich richtig verwendet.
Es funktioniert bis zu dem Punkt ActiveSheet.Paste. Hier kommt die Meldung, dass "hier bereits Daten stehen". Tun es aber nicht. Wenn ich dann sage trotzdem kopieren, schreibt er sie in die falsche Tabelle, nämlich die die ich abspeichere um das Makro zu starten, wenn ich aber sage nicht kopieren, bricht das Makro logischerweise ab, aber die dann aktive Zelle, ist genau die in die ich die Werte kopieren möchte.
Ich weiß, das ist jetzt nur ein Ausschnitt vom Code, was immer schwierig ist, aber der ganze Code ist ewig lang^^. Vielleicht sieht ja jemand direkt einen Fehler den ich in diesem Teil machen. Ich wäre um jede Hilfe froh
Vielen Dank schonmal und Gruß
Lukas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: Werte kopieren
11.04.2016 09:16:37
Noname
Hallo,
folgende Vorschläge:
Einen 'breakpoint' vor activesheet.paste zu setzen und den Inhalt aller Variablen zu prüfen.
Falls der Suchwert in Spalte A oder Zeile 1 gefunden wird, macht .offset(-1,-1) Probleme.
Da ich bis vor kurzem ähnlich programmiert habe, ist 'select' und 'activate' für mich nicht so ein Thema. Aber die erfahrene 'best-practice'- Programmierer lehnen das als 'unnötig und zeitfresser' ab. Damit hast du aber ungewöhnliche Strukturen, die nicht sofort zuüberblicken sind. Z.b. nutze ich
Dim rng
Set rng = range.find(...)
und weis, dass das Ergebnis ein range-Objekt ist.
Na ja, vielleicht hat es geholfen.
Schaun wir mal, was da noch kommt...

Anzeige
AW: Makro: Werte kopieren
11.04.2016 10:51:12
mucki4
Hallo,
zunächst mal Danke für die Antwort,
Habe versucht deinen Tipp umzusetzen. So weit ich das Überblicken kann sind aber alle Werte so wie sie sein sollen. Das Problem scheint in dem ActiveSheet.Paste Befehl zu liegen. Das Ganze sieht wie folgt aus
Userbild
Muss da vielleicht irgendein Paste Special... Befehl hin, weil es sich nicht um eine Zelle sondern einen Bereich handelt?
Zu dem Zeitpunkt von dem Bild ist die aktive Zelle zwei Zeilen unter dem markierten Bereich auf der Höhe der linken Spalte vom markierten Bereich. Da soll das Ganze auch eigentlich eingefügt werden.
Dass Select und Activate oft überflüssig sind habe ich auch schon gehört, deshalb hier auch schon probiert die Befehel irgendwie zusammen zu fügen. Das hat aber auch alles nicht so geklappt wie ich mir das vorgestellt habe, deshalb bin ich zu diesem System zurück^^

Anzeige
AW: Makro: Werte kopieren
11.04.2016 11:04:45
Noname
Hallo,
versuche einmal diesen Code, falls .offset(-1,1) njcht ins Leere läuft, könnte er funktionieren.

Range(activecell.offset(-1,-1), activecell.offset(9,3)).copy cells(zZielZeileL, zielSpalteL). _
resize(8,2)
Beim Abtippen können leicht Fehler passiere, und kopfrechnen für 'resize' ist auch nicht meine Stärke. In jedem Fall ist der code ungetestet.
Mfg

AW: Makro: Werte kopieren
11.04.2016 12:32:42
mucki4
Okay,
habe ein bisschen mit der Resize funktion rumgespielt, es läuft aber leider auf das gleiche Problem wie vorher hinaus. Er behauptet in dem Bereich ständen schon Werte. Aber was ich zu Resize gelesen habe, dient die auch eher dazu einen vorhandenen Bereich zu vergrößern, als ihn zu kopieren oder?
Danke natürlich trotzdem für den Versuch. Falls du noch eine Idee hast, immer her damit, mir sind sie nämlich inzwischen ausgegangen xD.
Gruß
Lukas

Anzeige
Beispieldatei?
13.04.2016 19:19:01
Michael
Hi zusammen,
ohne Beispieldateien ist das alles schwer nachzuvollziehen.
Ein paar Ideen hätte ich schon, aber aus Deiner Grafik alles abzutippen, ist mir zu mühsam.
Nur so viel: das paste wird im gleichen Blatt wie das copy vorgenommen, weil Du zwischendrin kein anderes Blatt aktivierst: das ist normal.
Und: wenn die reine Meldung stört und sonst alles ok ist, kann man die auch mit
application.DisplayAlerts=False
vor dem paste abschalten und hinterher mit
application.DisplayAlerts=True
wieder einschalten.
Schöne Grüße,
Michael

Anzeige
AW: Beispieldatei?
15.04.2016 09:18:19
mucki4
Hallo Michael,
etwas spät, aber trotzdem noch vielen Dank für die Hilfe :) .
Has das Ganze inzwischen gelöst. Wahrscheinlich nicht sonderlich elegeant aber so lange es funktioniert ;).
Cells(ZielZeileL + 1, ZielSpalteL).Select
If Bez ActiveCell.Text Then
Range(ActiveCell.Offset(-1, -1), ActiveCell.Offset(9, 3)).Copy
Range(ActiveCell.Offset(11, -1), ActiveCell.Offset(22, 3)).PasteSpecial
Workbooks("Auswertung.xlsm").Sheets("Hallenlayout").Cells(ZielZeileL + 12, ZielSpalteL - 1).Select
Range(ActiveCell.Offset(4, 1), ActiveCell.Offset(10, 6)).ClearContents
ActiveCell.Offset(1, 1) = Bez
ZielZeileL = ActiveCell.Row
ZielSpalteL = ActiveCell.Column + 1
Else: Range(ActiveCell.Offset(3, 0), ActiveCell.Offset(9, 3)).ClearContents
End If

Anzeige
na fein, danke für die Rückmeldung owT
15.04.2016 19:16:05
Michael

AW: Makro: Werte kopieren
11.04.2016 11:18:45
Noname
Hallo,
in einem kleinen Test hat es auch ohne 'resize' funktioniert.
Good luck

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige