Anzeige
Archiv - Navigation
728to732
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
728to732
728to732
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellbereich mit Offset aktivierbar?

Zellbereich mit Offset aktivierbar?
06.02.2006 18:37:22
Markus
Hallo Alle!
Ich bastle zur Zeit an meinem bisher schwierigstem makro herum und habe nun das Problem, dass ich einen Zellbereich kopieren und ueber aussortierte Datenzeilen (die in Spalte G markiert werden) schreiben moechte. Die Spaltenanzahl bleibt zwar immer gleich, jedoch aendern sich die Zeilenanzahlen, weshalb ich ueber:
Range("G65536").End(xlUp).Offset(1, -6).Select
gehe. Nu moechte ich von Spalte A bis G600 kopieren und ueber die alten Daten schreiben. Wie koennte man das machen?
Suche schon seit Stunden und komme nicht drauf, hilft mir jemand?
Danke im Vorraus,
Markus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellbereich mit Offset aktivierbar?
06.02.2006 18:52:35
Cardexperte
Hallo, geh doch einen ganz anderen Weg und Kopiere die Zellen in 2 ineinandergeschachtelten Schleifen:
zahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To 4
For i = 1 To zahl
Sheets("Formular").Cells(i, j).Value = Cells(i, j).Value
Next i
Next j
dabei steht j für die Spalten, i für die zeilen von 1 bis zur letzten "ausgefüllten" Zelle
übertragen werden die Zellen ins Blatt Formular, wenn du jetzt noch in dieser inneren Schleife eine if bedingung zur Abfrage ob in Spalte g die Zelle "markiert" wurde einbaust, ist alles mit einmal erledegt, ohne Range, select, copie usw. zu benutzen!
Gruss WS
Anzeige
AW: Zellbereich mit Offset aktivierbar?
06.02.2006 23:07:24
Markus
Hallo MS!
Vielen Dank fuer Deinen Tipp!
Da ich bisher nur VBA ueber Recorder kennengernt habe/kennenlerne geh ich halt bisher leider etwas umstaendliche Wege...mit dem Gefuehl, das geht doch bestimmt auch einfacher... und deshalb bin ich dankbar fuer jeden Tip.
Ich versuch das mal umzusetzen, bin mir aber nicht so recht sicher ob ich alles gerafft hab. Daher vielleicht auch eine daemliche Frage:
Warum j = 1 to 4? Kopieren muss ich die Spalten A bis G.
Das mach ich aber morgen, denn nu bin ich im Feierabend, Excel laesst mich aber nich los...
Gruss und bedankt,
Markus
Anzeige
AW: Zellbereich mit Offset aktivierbar?
07.02.2006 08:20:00
Cardexperte
Hallo Markus,
das was ich reingestellt habe, war nur ein Programmschnitzel eines eigenen VBA-Programms, da brauchte ich nur die Spalten a bis d ins Blatt Formular zu "kopieren". brauchst also nur wenn du bis G brauchst also 1 bis 7 einzutragen und fertig, das Ergebnis siehst du auch im Blatt, noch ein kleiner Hinweis:
(vieleicht kennst du das aber auch schon)
1. ordne das Excelfenster und das VBA Fenster untereinander an, so dass du alles beides siehst
2. gehe mit dem Cursor ins Codefenster und führe das Makro im Einzelschrittmodus aus (immer F8-Taste drücken), du siehst dann gleichzeitig im Codefenster, welchen Code er gerade abarbeitet und wenn du mit dem Cursor auf eine Variable zeigst, dann wird dir der momentane Wert angezeigt, und gleichzeitig was so alles in der Tabelle passiert dies ist sehr hilfreich um die Schleife nachzuvollziehen, mit den Haltepunkten lies mal in der Hilfe nach
noch ein Hinweis zu diesem Code:
da die Durchläufe (zeilenanzahl ja unterschiedlich ist, musst du in dem Blatt, wo die Ergebnisse "hinkopiert" werden natürlich dafür sorgen, dass bei kleinerer Zeilenanzahl die vorherigen Zahlen aus bei größeren Zeilen gelöscht werden! Ist auch kein Problem.
Falls du Hilfe dazu brauchst kannst du mich auch direkt anmailen(Seidel-welka@gmx.de).
Aber mehr lernst du wenn du alles erstmal selber ausprobierst!
Gruss WS
Anzeige
AW: Zellbereich mit Offset aktivierbar?
07.02.2006 09:31:16
Markus
Guten Morgen!
Ja die FX-Short Cuts kenne ich bereits, sehr angenehm...
Es waere besser, wenn die kopierten Zeilen in meinem Historien-File untereinander geschrieben werden. Das wird aber eerst das naechste Problem sein...erstmal gucken, ob ich Deine vorherigen Tipps verwenden kann, denn auch bei mir ist es so, dass dies nur einTeil des Makros darstellt. Es ist naemlich so, dass dieses bisher die markierten Zeilen nach oben sortiert, hier dann einen formelmaessigen Wert (Spalte H) aus der untersten markierten Zeile als neuen Ausgangswert fuer die Berechnung nach H9 ausgibt und erst dann die nicht markierten Zeilen ueber die markierten schreiben soll. Das klappt auch ganz gut, weshalb eigentlich nur noch das Kopieren fehlt...
Wenns Dich interessiert kann ich den Code ja mal vorab ins Forum stellen.
Gruss,
Markus
Anzeige
AW: Zellbereich mit Offset aktivierbar?
07.02.2006 09:58:10
Cardexperte
Hallo Markus,
das Problem mit dem "kopieren" ist mir schon bewusst, denn das Ergebnis wird bei meinem Code ja ich sage mal mit den Löchern kopiert, das lässt sich aber mit unterem Code ganz einfach umgehen, durch Einführung einer weiteren "Zählvariablen" k:
k=1
For j = 1 To 4
For i = 1 To zahl
Sheets("Formular").Cells(i, j).Value = Cells(k, j).Value
k=k+1
Next i
Next j
das mit dem sortieren usw. was schon klappt würde ich so belassen, natürlich kannst du mir deine xls auch zusenden, kein Problem!
Gruss WS
AW: Zellbereich mit Offset aktivierbar?
07.02.2006 10:15:47
Markus
Hi!!
Da haben wir wohl gleichzeitig geschrieben...
Anzeige
Code
07.02.2006 10:02:40
Markus
Hallo WS!
Also hier kommt der Code, habe versucht mich in deinen Tipp reinzudenken.
Ich glaube hierfuer muesste ich dann nochmal den UsedRange festlegen, da sich in den oberen Zeilen Kommentare/Zusammenfassung befindet oder? Ausserdem sollen bei mir die markierten Zeilen durhc die nicht markierten innerhalb des gleichen Blattes ueberschrieben werden. Wenn ich die markierten Zeilen zuvor noch exportieren koennte (das waere dann das misterioese Historien-File) waer das prima, muss aber nicht unbedingt sein...ich fuehrchte Deine Schleifen kann ich doch nicht verwenden.
Hier kannst du mal schauen was ich gemacht habe:
Sub Kopieren()
'
' Kopieren Macro
' Macro registrata il 06/02/2006 da MR
'
'
Range("A10:G600").Select 'Sortierbereich festlegen
Range("G600").Activate 'Sortierkriterium festlegen (nach Spalte G)
Selection.Sort Key1:=Range("G600"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'Sortieren
Range("G65536").End(xlUp).Offset(0, 1).Select 'Letzte verwendete Zelle waehlen und Zelle Rechts aktivieren
Selection.Copy ' Kopieren der aktivierten Zelle
Range("H9").Select ' Zelle H9 aktivieren
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False 'Wert einfuegen
Range("G65536").End(xlUp).Offset(0, -6).Select 'Letzte verwendete Zelle waehlen und Zelle links (-6)aktivieren
Selection.Copy 'etc.
Range("A9").Select 'etc.
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("G65536").End(xlUp).Offset(1, -6).Select
'SOOO, an dieser Stelle wuerde ich also nicht nur eine Zelle aktivieren sondern gerne den Bereich von 1,-6 (=Spalte A) bis G600 und diesen dann ueber die markierten Zellen schreiben...Wie kann ich diesen Bereich aktivieren?
Gruss,
Markus
Anzeige
JA! Zellbereich mit Offset aktivierbar?
07.02.2006 14:44:36
Markus
Hallo Forum!
Fuer alle die es interessiert, hier das Makro das ich aufgrund der Hilfe hier im Forum zusammenbasteln konnte. Ein Dank an Cardexperte an dieser Stelle(auch wenn ich es jetzt anders gemacht habe).
Es scheint mir kein ganz besonders elegantes Makro zu sein aber es funktioniert.
Wer Lust hat mir bessere Loseungen nahe zu legen, nur zu, ich lerne noch...;-)
Ciao,
Markus

Sub SortierenSaldoUebernehmenKopieren()
' SortierenSaldoUebernehmenKopieren Macro
' Macro registrata il 06/02/2006 da MR
Application.ScreenUpdating = False
Range("A10:G600").Select 'Sortierbereich festlegen
Range("G600").Activate 'Sortierkriterium festlegen (nach Spalte G)
Selection.Sort Key1:=Range("G600"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'Sortieren
Range("G65536").End(xlUp).Offset(0, 1).Select 'Letzte verwendete Zelle waehlen und Zelle Rechts aktivieren
Selection.Copy ' Kopieren der aktivierten Zelle
Range("H9").Select ' Zelle H9 aktivieren
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False 'Wert einfuegen
Range("G65536").End(xlUp).Offset(0, -6).Select 'Letzte verwendete Zelle waehlen und Zelle links (-6)aktivieren
Selection.Copy 'etc.
Range("A9").Select 'etc.
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("G65536").End(xlUp).Offset(1, -6).Select 'unterhalb der letzten markierten Reihe erste Zelle Spalte A aktivieren
Range(Selection, Selection.Offset(600, 6)).Copy ' Bereich bis Zeile 600 darunter kopieren
Range("A10").Select 'erste Anwender-Zelle aktivieren
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False ' Werte einfuegen
Application.CutCopyMode = False
Range("A1").Select
Application.ScreenUpdating = True
End Sub

Anzeige
erledigt
10.02.2006 15:28:37
Markus
e

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige