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

Offset Befehl - Eine bessere Variante?

Offset Befehl - Eine bessere Variante?
16.09.2008 12:40:00
Rolf
Hi Forum
Ausgangslage: Spalte A,B,C. Curser: Spalte A
Makroauszug:
ActiverCell. Offset (2,0).Select
Gleicht irgendwie Haarscharf einem Range Befehl.
Gibts da auch was von Ratiopharm, das man so was auch irgendwie einfacher haben kann, damit von A nach C gewechselt wird, ohne eine bestimmte Zelle genau zu deffinieren
Gruss
Rolf

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

Betreff
Datum
Anwender
Anzeige
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 12:45:00
Rudi
Hallo,
wozu Select? Ist zu 99% überflüssig.
Was hast du gegen Range?
Gruß
Rudi
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 12:50:15
Tobias
Hallo Rolf

Was hast du gegen Range?

oder gegen Cells?
Angenommen, du möchtest immer zwei Zellen nach links ausgehend von der aktiven Zelle:

Sub ZweiNachLinks()

    Cells(ActiveCell.Row, ActiveCell.Column + 2).Select

End Sub

ABER!!! Um noch mal Rudi zu wiederholen:

wozu Select? Ist zu 99% überflüssig.


Gruß, Tobi
http://www.vba-blog.de/

AW: Offset Befehl - Eine bessere Variante?
Rolf

Hallo,
Desswegen frag ich ja.... Dann hab ich nur was gegen Select.
Das bedeute also, dass man nach der ActiveCell-Anweisung die nächste operation anhängen kann, z.B. so Ausganglage wie zuvor:
ActiveCell.Offset(0,2).ClearContents (als Beispiel Anstelle von select oder activate.
Befindet sich nach der Anweisung der Curser immer noch auf A1 oder bann auf c1?
Mitt dieser Methode wird also der Curser eigentlich nier verschoben, sondern erst dann, wenn etwas in eine Zelle geschrieben werden soll?
Gruss
Rolf
AW: Offset Befehl - Eine bessere Variante?
Rudi

Hallo,

Befindet sich nach der Anweisung der Curser immer noch auf A1


jawoll!


sondern erst dann, wenn etwas in eine Zelle geschrieben werden soll?


Nein, auch dann nicht.
z.B. ActiveCell.Offset(0,2)="Test"
die aktive Zelle bleibt, wo sie ist.
Du brauchst für Tabbelnoperationen generell kein Select und kein Activate. Auch nicht beim Arbeiten über mehrere Blätter. Du brauchst nur die korrekte Addressierung.
Mal für Spaß:


Sub tt()
Dim wks As Worksheet, iZeile As Integer, iSpalte As Integer
For Each wks In Worksheets
For iZeile = 1 To 10
For iSpalte = 1 To 5
With wks.Cells(iZeile, iSpalte)
.Value = iZeile ^ iSpalte
.Interior.ColorIndex = iZeile
End With
Next iSpalte
Next iZeile
Next wks
End Sub

Gruß
Rudi

AW: Offset Befehl - Eine bessere Variante?
Rolf

Hallo Rudi,
Ach so, langsam kapier ich das....*freu*
Da ich ja nebenher ,auch probeweise und zum Spass das mal ausprobiere, bin ich noch uf folgndes Problem gestossen:

Sub test()
Sheets("Tabelle2").Columns(A + ":" + A).ClearContents
End Sub


so funktioniert das nicht. Hätte da gerne (mit Variablen geschrieben:
Sheets("Tabelle2").Columns("A:A").ClearContents
wobei jedoch der beriech (durch definierte vraiablen) uneingeschränkt veränderbar ist. Das heisst:
A="A" ergibt "A:A"
A="E" ergibt "E:E"
Wie heisst das korrekt den ein Anführungszeichen kann man irgendwie nicht schreiben :"""
Gruss Rolf

AW: Offset Befehl - Eine bessere Variante?
Ramses

Hallo
Das reicht auch
Sheets("Tabelle2").Columns("A").ClearContents
oder bei grösseren Bereichen
Sheets("Tabelle2").Columns("A:G").ClearContents
Alternativ mit Variablen
X1 = "A"
X2 = "G"
Sheets("Tabelle2").Columns(X1 & ":" & X2).ClearContents
Gruss Rainer
AW: TIpps zu Adressierung von Zellen
Zellen

Danke an beide, Rainer und Rudi
Was haben wir heute wieder gelernt! Da wird mein makro geich viel übersichtlicher und schlanker!
Grazie mille
Rolf
AW: Offset Befehl - Eine bessere Variante?
Rudi

Hallo,
nebenbei gesagt solltest du anstatt der Buchstaben die Spalten-Nummer verwenden. Ist zwar meistens egal, wird aber schneller verarbeitet.
Range(Columns(1),Columns(3)).ClearContents
oder eben
x=1
sheets("Tab2").Columns(x).clearcontents
Gruß
Rudi
AW: Offset Befehl - Eine bessere Variante?
Ramses

Hallo
"..der Curser immer noch auf A1 oder dann auf c1..:"
Er ist immer noch auf der zuletzt aktiven Zelle
"...sondern erst dann, wenn etwas in eine Zelle geschrieben ..."
Worksheets("Ausgeblendet").Cells(1,1) = "Versteckt"
Das ändert GAR nichts an der Cursorplatzierung, daher kannst du ja auch auf nicht aktive, ausgeblendete oder xlVeryhidden Tabellen schreiben
Gruss raienr
AW: Offset Befehl - Eine bessere Variante?
Rolf

Hallo Rainer
Auf die Adressierung kommt es an. Und adressieren kann man mit Range, Cell,Row, Column etc. und danach folg tie entsprechende Aktion entweder (je nach syntax) mit = oder mit Punkt (.)
Ach was kann VBA doch spass machen, wenn man es kapiert...
Rolf :)
Anzeige
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 13:04:46
Rolf
Hallo,
Desswegen frag ich ja.... Dann hab ich nur was gegen Select.
Das bedeute also, dass man nach der ActiveCell-Anweisung die nächste operation anhängen kann, z.B. so Ausganglage wie zuvor:
ActiveCell.Offset(0,2).ClearContents (als Beispiel Anstelle von select oder activate.
Befindet sich nach der Anweisung der Curser immer noch auf A1 oder bann auf c1?
Mitt dieser Methode wird also der Curser eigentlich nier verschoben, sondern erst dann, wenn etwas in eine Zelle geschrieben werden soll?
Gruss
Rolf
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 13:14:00
Rudi
Hallo,

Befindet sich nach der Anweisung der Curser immer noch auf A1


jawoll!


sondern erst dann, wenn etwas in eine Zelle geschrieben werden soll?


Nein, auch dann nicht.
z.B. ActiveCell.Offset(0,2)="Test"
die aktive Zelle bleibt, wo sie ist.
Du brauchst für Tabbelnoperationen generell kein Select und kein Activate. Auch nicht beim Arbeiten über mehrere Blätter. Du brauchst nur die korrekte Addressierung.
Mal für Spaß:


Sub tt()
Dim wks As Worksheet, iZeile As Integer, iSpalte As Integer
For Each wks In Worksheets
For iZeile = 1 To 10
For iSpalte = 1 To 5
With wks.Cells(iZeile, iSpalte)
.Value = iZeile ^ iSpalte
.Interior.ColorIndex = iZeile
End With
Next iSpalte
Next iZeile
Next wks
End Sub

Gruß
Rudi

Anzeige
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 13:40:00
Rolf
Hallo Rudi,
Ach so, langsam kapier ich das....*freu*
Da ich ja nebenher ,auch probeweise und zum Spass das mal ausprobiere, bin ich noch uf folgndes Problem gestossen:

Sub test()
Sheets("Tabelle2").Columns(A + ":" + A).ClearContents
End Sub


so funktioniert das nicht. Hätte da gerne (mit Variablen geschrieben:
Sheets("Tabelle2").Columns("A:A").ClearContents
wobei jedoch der beriech (durch definierte vraiablen) uneingeschränkt veränderbar ist. Das heisst:
A="A" ergibt "A:A"
A="E" ergibt "E:E"
Wie heisst das korrekt den ein Anführungszeichen kann man irgendwie nicht schreiben :"""
Gruss Rolf

Anzeige
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 13:47:00
Ramses
Hallo
Das reicht auch
Sheets("Tabelle2").Columns("A").ClearContents
oder bei grösseren Bereichen
Sheets("Tabelle2").Columns("A:G").ClearContents
Alternativ mit Variablen
X1 = "A"
X2 = "G"
Sheets("Tabelle2").Columns(X1 & ":" & X2).ClearContents
Gruss Rainer
AW: TIpps zu Adressierung von Zellen
16.09.2008 14:14:00
Zellen
Danke an beide, Rainer und Rudi
Was haben wir heute wieder gelernt! Da wird mein makro geich viel übersichtlicher und schlanker!
Grazie mille
Rolf
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 14:20:00
Rudi
Hallo,
nebenbei gesagt solltest du anstatt der Buchstaben die Spalten-Nummer verwenden. Ist zwar meistens egal, wird aber schneller verarbeitet.
Range(Columns(1),Columns(3)).ClearContents
oder eben
x=1
sheets("Tab2").Columns(x).clearcontents
Gruß
Rudi
Anzeige
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 13:14:00
Ramses
Hallo
"..der Curser immer noch auf A1 oder dann auf c1..:"
Er ist immer noch auf der zuletzt aktiven Zelle
"...sondern erst dann, wenn etwas in eine Zelle geschrieben ..."
Worksheets("Ausgeblendet").Cells(1,1) = "Versteckt"
Das ändert GAR nichts an der Cursorplatzierung, daher kannst du ja auch auf nicht aktive, ausgeblendete oder xlVeryhidden Tabellen schreiben
Gruss raienr
AW: Offset Befehl - Eine bessere Variante?
16.09.2008 13:43:00
Rolf
Hallo Rainer
Auf die Adressierung kommt es an. Und adressieren kann man mit Range, Cell,Row, Column etc. und danach folg tie entsprechende Aktion entweder (je nach syntax) mit = oder mit Punkt (.)
Ach was kann VBA doch spass machen, wenn man es kapiert...
Rolf :)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige