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

Nicht zusammenhängender Spaltenbereich bearbeiten

Nicht zusammenhängender Spaltenbereich bearbeiten
Peter
Guten Abend
Ich habe einen nicht zusammenhängenden Spaltenbereich. Nun möchte ich jede Zelle zwei Zellen rechts von diesem Bereich mit dem Zellinhalt zwei Zellen links davon abfüllen.
Mit nachfolgendem Code funktioniert das, allerdings etwas langsam.
Lässt sich das beschleunigen?
Gruss, Peter
Sub Test()
Dim rngZelle As Range
For Each rngZelle In Range("SpaltenBereichNichtZusammenhaengend")
rngZelle.Offset(0, 2) = rngZelle.Offset(0, -2)
Next rngZelle
End Sub

AW: Nicht zusammenhängender Spaltenbereich bearbeiten
09.08.2012 17:27:22
Ramses
Hallo
Was verstehst du unter "langsam" ?
Ändere mal den Code in
Sub Test()
Dim rngZelle As Range
For Each rngZelle In Range("SpaltenBereichNichtZusammenhaengend")
rngZelle.Offset(0, 2) = rngZelle
Next rngZelle
End Sub

10000 Zellen werden dabei bei mir (normales laptop) in weniger als 4 Sekunden abgearbeitet.
Gruss Rainer
AW: Nicht zusammenhängender Spaltenbereich bearbeiten
09.08.2012 17:31:28
Matze,Matthias
Hallo Peter,
Das kann nicht gehn, wo ist den der Range defeniert? Welche Zellen sind das ?
Vor der Schleifenabfrage Application..EnableEvents = False
und vor End Sub wieder auf True setzen.
Matze
Anzeige
wieso kann das nicht gehen ?
09.08.2012 17:40:48
Matthias
Hallo
Das geht doch ohne Probleme, nur wie er schreibt eben langsam.
Einfach Berechnung auf manuell und Bildschirmaktualisierung aus.
Am Ende wieder einschalten. Mit denm Events, hast Du ja schon geschrieben.
Wieso Rainer den Quellbereich ändert, obwohl Peter doch Offset(,-2) nach .Offset(,2) kopieren will
ist mir auch ein Rätsel ;-)
Gruß Matthias
AW: wieso kann das nicht gehen ?
09.08.2012 18:11:34
Ramses
Hallo
"...Wieso Rainer den Quellbereich ändert, obwohl Peter doch Offset(,-2) nach .Offset(,2) kopieren will
ist mir auch ein Rätsel ;-)..."
Vielleicht ist es ein Verständnisproblem meinerseits
""Nun möchte ich jede Zelle zwei Zellen rechts von diesem Bereich mit dem Zellinhalt zwei Zellen links davon abfüllen.""
Ich habe das so verstanden, dass der Inhalt der Zelle in die zweite Zelle rechts davon geschrieben werden soll
Gruss Rainer
Anzeige
AW: Nicht zusammenhängender Spaltenbereich bearbeiten
09.08.2012 18:13:44
Ramses
Hallo
"..Das kann nicht gehn, wo ist den der Range defeniert..."
Hier ist der Bereich definiert
In Range("SpaltenBereichNichtZusammenhaengend")
Das ist ein Namen innerhalb der Tabelle. Dort können alle Zellen innerhalb des Namens mit Range angesprochen werden.
Gruss Rainer
AW: Nicht zusammenhängender Spaltenbereich bearbeiten
09.08.2012 18:04:35
Matthias
Hallo
Das Einzige auf was Du aufpassen solltest, Das Dein Bereich auf jeden Fall mind. in Spalte(3) liegt.
Auf der anderen Seite muß dann der Bereich ebenfalls mind 3 Spalten vor der letzten Spalte liegen
(ist in der Datei noch nicht! berücksichtig.)
Sonst gibt es einen VBA-Fehler.
Beispiel der Bereich wäre in Spalte(2)
.Offset(,-2) wäre nun die Spalte(0) - und das würde den Fehler auslösen
Schau mal in die Datei, obs so schneller geht:
https://www.herber.de/bbs/user/81354.xlsm
Gruß Matthias
Anzeige
Korrektur
09.08.2012 18:16:55
Matthias
Hallo Peter
Hatte vergessen wieder auf True zu stellen!
Ersetze bitte mal den Code in der Datei:
Option Explicit
Sub Test()
Dim rngZelle As Range
Dim MyCalculation
With Application
MyCalculation = .Calculation 'merken
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
For Each rngZelle In Range("SpaltenBereichNichtZusammenhaengend")
If rngZelle.Column > 2 And rngZelle.Column 

Gruß Matthias
überarbeiteter Code mit Fehlerbehandlung ...
09.08.2012 18:43:18
Matthias
Hallo
Option Explicit
Sub Test()
Dim rngZelle As Range
Dim MyCalculation
Dim MyBool As Boolean
On Error GoTo ErrExit
With Application
MyCalculation = .Calculation 'merken
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
With Range("SpaltenBereichNichtZusammenhaengend")
If .Column > 2 And .Column 
Gruß Matthias
Anzeige
AW: Nicht zusammenhängender Spaltenbereich bearbeiten
09.08.2012 21:33:05
Peter
Hallo Matthias und alle Helfer
Das ist prima.
Mein Geschwindigkeitsproblem hing wohl damit zusammen, dass die Events nicht ausgeschaltet waren und die Datei hat zudem eine bestimmte Grösse.
Viele Dank.
Gruss, Peter

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige