Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ActiveCell.Offset(-1, 0).Range("A1").Select

Forumthread: ActiveCell.Offset(-1, 0).Range("A1").Select

ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 12:16:14
benji
ActiveCell.Offset(-1, 0).Range("A1").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A100"), Type:= _
xlFillDefault
ActiveCell.Range("A1:A100").Select
hallo sobald ich versuche das ganze dynamisch zu machen also quasi aus dem A100 eine variable zu basteln meckert er sofort herum und sagt mir das es falsch ist!!!
hab bereits ein kurzes makro dafür gefunden aber es will einfach nicht funktionieren!
hab es auch schon alleine getestet da funktioniert es einwandfrei
Option Explicit

Sub ABereich()
Dim intRow As Long
intRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1:A" & intRow).Select
End Sub

hoffe ihr könnt mir helfen wäre echt dringend!??!
Gruss benji
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 12:27:13
Cardexperte
Hello benji,
was ist den das für eine Anweisung, ActiveCell.Offset(-1, 0).Range("A1").Select und ActiveCell.Range("A1:A100").Select hier muss doch eigentlich eine Fehlermeldung kommen oder?
Gruss Ws
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 12:34:02
benji
hab es so aus einer makroaufzeichnung und ansonsten funktioniert es auch??? aber ich kann damit noch nix anfangen bin erst seit 5 tagen in vba vertieft - aber es läuft einfach nicht grrrrrr....
Anzeige
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 12:28:43
g
Hi
Range(Cells(1,1),Cells(intRow,1))...................
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 12:41:00
benji
ActiveCell.Offset(-1, 0).Range("A1").Select
Selection.AutoFill Destination:=ActiveCell.Range(Cells(1, 1), Cells(intRow, 1)), Type:= _
xlFillDefault
ActiveCell.Range(Cells(1,1), Cells(intRow,1))
also quasi so, oder???
funktioniert beim ersten und beim zweiten bringt er mir wieder eine fehlermeldung auch wenn ich danach noch ein .select setze???
und ausgegeben wird auch nicht das was eigentlich sollte???
HILFE
Anzeige
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 12:55:43
Cardexperte
Hello benji,
das füphrt zu nichts, stell doch mal deine Datei (auszugsweise) hier rein!
Gruss WS
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 13:08:23
benji
hier der link...hoffe ihr könnt damit etwas anfangen

Die Datei https://www.herber.de/bbs/user/16806.xls wurde aus Datenschutzgründen gelöscht

AW: ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 13:33:05
Cardexperte
Hello , blicke nicht durch, um welches Makro von den vielen auch viele leere handelt es sich, oder schreib mal was du eiggentlich willst, eine Spalte einfügen, die erste Frage habe ich schon, warum du in Spalte 25 den Wert überschreibst, und sub ABereich habe ich nicht gefunden!
Gruss WS
Anzeige
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
25.01.2005 13:47:43
benji
sorry der erste teil funktioniert bereits - so wie du es gesagt hast - hab noch ein bisschen herum gebastelt am anfang hat es nicht geklappt aber jetzt geht es??? hauptsache es läuft....
es geht in jedem makro darum das die werte, meistA100 gegen einen flexiblen wert ausgetauscht werden.
ein weiteres problem wenn du noch lust hast dich in meinen code einzulesen ist das es auch für andere sheets funktionieren soll. Also das ich am besten einfach den quelltext nehme und das in einem anderen einfach einfüge und es dann auch läuft...???
Anzeige
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
26.01.2005 08:50:46
Cardexperte
Hello benji,
guck dir mal das Makro an, es ist viel komfortabler mit Variablen gleich zu rechnen und nicht erst für die Zwischenergebnisse Spalten einzufügen, die anschließend wieder gelöscht werden, hier hatte ich die meisten Schwierigkeiten mich reinzulesen, teste mal das Makro im Einzelschrittmodus und lass als Überwachungsvariable mal wert(i) anzeigen, dann siehst du was im einzelnen passiert (eigentlich das gleiche wie in deinem Makro! Makro heist MakroWS aber ich habe eine Schaltfläche mit reingestellt und die Ausgangslage kannst du immer wieder durch letzte Blatt erzeugen!
Gruss WS
https://www.herber.de/bbs/user/16876.xls
Anzeige
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
26.01.2005 12:17:02
benji
jetzt fange ich gleich das heulen an;-)
bastel da seit zwei tagen herum und du schaffst es in ein paar zeilen...juhuu
vielen dank funktioniert einwandfrei werde mich gleich mal ans vba üben machen
mfg benji
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
26.01.2005 12:46:05
Cardexperte
Hello benji,
nicht verzweifeln, du hast das mittels Makrorecorder doch auch hingekriegt, ich habe gerade gesehen, das man das Makro noch weiter vereinfachen kann, denn die Arreyvariable Wert ist überhaupt nicht notwendig, d.h. diese wert(i) kannst du überall wegnehmen und auch die Dim Anweisung ist dann überflüssig.
Gruss WS und viel Spass noch beim VBA
Anzeige
AW: ActiveCell.Offset(-1, 0).Range("A1").Select
26.01.2005 12:48:06
Cardexperte
Hello benji,nochwas, ich glaube du hattest die Frage, ob man das Makro auf mehrer Mappen ausweiten kann, ja denn der Aufruf müsste eigentlich in allen Mappen funktionieren, wenn die Datenstruktur die gleiche ist.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Zellreferenzen mit ActiveCell.Offset in VBA


Schritt-für-Schritt-Anleitung

Um mit ActiveCell.Offset in VBA zu arbeiten, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Rechtsklicke auf VBAProject (deineDatei.xlsm) und wähle Einfügen > Modul.

  3. Schreibe den Code: Verwende den folgenden Code, um eine dynamische Zellreferenz zu erstellen:

    Sub DynamischeReferenz()
        Dim intRow As Long
        ' Bestimme die letzte verwendete Zeile in Spalte A
        intRow = Cells(Rows.Count, 1).End(xlUp).Row
        ' Wähle die Zellen von A1 bis zur letzten Zeile
        Range("A1:A" & intRow).Select
        ' Autofill von der aktuellen aktiven Zelle
        ActiveCell.Offset(-1, 0).Range("A1").Select
        Selection.AutoFill Destination:=ActiveCell.Range("A1:A" & intRow), Type:=xlFillDefault
    End Sub
  4. Führe das Makro aus: Drücke F5 oder gehe zu Run > Run Sub/UserForm.


Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"
    Ursache: Du verwendest ActiveCell.Offset ohne eine aktive Zelle. Stelle sicher, dass eine Zelle aktiv ist, bevor Du das Makro ausführst.

  • Fehler: "Index außerhalb des Bereichs"
    Ursache: Dies geschieht, wenn Du versuchst, auf eine Zelle zuzugreifen, die nicht existiert. Überprüfe, ob intRow korrekt berechnet wurde.

  • Lösung für dynamische Bereiche:
    Wenn du einen flexiblen Bereich benötigst, nutze die Cells-Funktion anstelle von festen Zellreferenzen, um Fehler zu vermeiden.


Alternative Methoden

Eine alternative Methode zur Verwendung von ActiveCell.Offset ist die Nutzung der Cells-Methode:

Sub AlternativeMethode()
    Dim intRow As Long
    intRow = Cells(Rows.Count, 1).End(xlUp).Row
    ' Autofill ohne ActiveCell
    Range(Cells(1, 1), Cells(intRow, 1)).Select
    Selection.AutoFill Destination:=Range(Cells(1, 1), Cells(intRow, 1)), Type:=xlFillDefault
End Sub

Diese Methode kann in vielen Fällen stabiler sein, da sie nicht von der aktiven Zelle abhängt.


Praktische Beispiele

  1. Einfaches Autofill:
    Verwende ActiveCell.Offset für schnelle Autofill-Operationen in einem bestimmten Bereich.

  2. Kopieren von Werten:
    Kopiere Werte von einer Zelle in eine andere, indem du ActiveCell.Offset nutzt:

    Sub WerteKopieren()
       ActiveCell.Offset(0, 1).Value = ActiveCell.Value
    End Sub
  3. Datenübertragung zwischen Blättern:
    Du kannst auch ActiveCell.Offset verwenden, um Daten zwischen verschiedenen Arbeitsblättern zu übertragen.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft, Fehler zu vermeiden, indem es sicherstellt, dass alle Variablen deklariert sind.

  • Debugging mit Debug.Print: Setze Debug.Print intRow ein, um den Wert von intRow zu überprüfen und sicherzustellen, dass deine Berechnungen korrekt sind.

  • Makros optimieren: Halte deine Makros so kurz und prägnant wie möglich. Überlege, ob du unnötige Schritte eliminieren kannst, um die Ausführungsgeschwindigkeit zu erhöhen.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen ActiveCell.Offset(1, 0).Select und ActiveCell.Offset(1, 0).Activate?
Select wählt die Zelle aus, während Activate die Zelle aktiv macht, ohne sie auszuwählen.

2. Wie kann ich den Offset dynamisch ändern?
Du kannst den Offset-Wert in einer Variablen speichern und diese Variable dann in ActiveCell.Offset verwenden.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in allen modernen Excel-Versionen (Excel 2007 und höher) funktionieren, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige