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

Forumthread: VBA - Zellen in Range der durchlaufen

VBA - Zellen in Range der durchlaufen
09.03.2020 09:07:33
Kleo
Hallo Zusammen,
Ich möchte gerne in einer Tabelle einen Range markieren (nur eine Zeile), in dem dann nacheinander alle Zellen durchlaufen werden sollen.
Mein Problem ist jetzt aber, dass sofort alle Zellen in diesem Range markiert werden und nicht nur die erste Zelle, dann durchführen und dann die zweite Zelle, dann durchführen, usw.
Wäre sehr dankbar wenn Ihr mir helfen könntet,
Grüße,
Kleo
Sub refreshSave()
' refreshSave Macro
Worksheets("Sheet1").Select
Range("B3").Select
Dim Slctn As Range
Set Slctn = Range(Selection, Selection.End(xlToRight))
Slctn.Select
Dim Zelle As Range
Set Zelle = Range("B3")
For Each Zelle In Slctn
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
- hier wird das kopierte in ein anderes Tabellenblatt eingefügt/aktualisiert -
Next Zelle
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zellen in Range der durchlaufen
09.03.2020 09:21:20
Daniel
Hi
Zu viel unnötige Selectiererei.
Das reicht:
Dim Slctn As range
Dim Zelle AS Range
Set Slctn = sheets("Sheet1"). Range("B3")
Set Slctn = Range(Slctn, Slctn.Ende(xltoright))
For each Zelle in Slctn
Zelle.Copy
Next
Gruß Daniel
AW: VBA - Zellen in Range der durchlaufen
09.03.2020 09:44:48
Kleo
Hallo @Daniel,
Habe das erstmal so übertragen, aber dann wechselt es gar nicht ins Sheet1 und beim "Set Slctn = Range(Slctn, Slctn.Ende(xlToRight))" kommt die Fehlermeldung "Run-time error 438: Object doesn't support this property or method.
Anzeige
AW: VBA - Zellen in Range der durchlaufen
09.03.2020 10:10:24
Daniel
Hi
da ist ein kleiner Tippfehler drin, den meine Autokorrektur eingebaut hat und den ich übersehen habe.
da du die richtige Schreibweise einfach nur bei dir abschreiben kannst, würde ich dich bitten, diesen Fehler selber zu korrigieren.
Gruß Daniel
AW: VBA - Zellen in Range der durchlaufen
09.03.2020 10:46:08
Kleo
Habe ich auch gerade gesehen, danke trotzdem :)
Anzeige
AW: VBA - Zellen in Range der durchlaufen
09.03.2020 09:23:32
Kleo
Okay, mein Problem hat sich gerade verschoben, ich habe herausgefunden, wie ich die einzelnen Spalten durchlaufe aber ich möchte die spalten in jedem Worksheet aktualisieren.
Also soll es:
- Spalte kopieren
- anderes worksheet öffnen
- schauen, ob dort die Spalte mit der gleichen Überschrift vorhanden ist und wenn ja, diese ersetzen.
Momentan kopiert es einfach die Spalten im selben Worksheet hinten an die Tabelle.
Sub refreshSave()
' refreshSave Macro
Worksheets("Sheet1").Select
Range("B3").Select
Dim Slctn As Range
Set Slctn = Range(Selection, Selection.End(xlToRight))
Slctn.Select
Dim Zelle As Range
Set Zelle = Range("B3")
For Each Zelle In Slctn
Range(Zelle, Zelle.End(xlDown)).Select
Selection.Copy
' SheetWählen.Show
Dim wks As Worksheet
For Each wks In Worksheets
Range("A3").Select
Dim hier As String
hier = Selection
Do
ActiveCell.Offset(0, 1).Select
Loop Until ActiveCell.Value = hier
ActiveSheet.Paste
Selection.Columns.EntireColumn.EntireColumn.AutoFit
Next wks
Next Zelle
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellen in einem Range mit VBA durchlaufen


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine Schleife zu erstellen, die alle Zellen in einem bestimmten Range durchläuft, kannst du den folgenden Code verwenden. Achte darauf, dass du die korrekten Bezeichner verwendest, um Runtime Error 438 zu vermeiden:

Sub refreshSave()
    Dim Slctn As Range
    Dim Zelle As Range

    ' Setze den Range, in dem die Zellen durchlaufen werden sollen
    Set Slctn = Worksheets("Sheet1").Range("B3", Range("B3").End(xlToRight))

    ' Schleife über jede Zelle im definierten Range
    For Each Zelle In Slctn
        ' Hier kannst du die gewünschte Aktion für jede Zelle ausführen
        Zelle.Copy
        ' Beispiel: Zelle in ein anderes Blatt einfügen
    Next Zelle
End Sub

In diesem Beispiel wird die For Each Schleife verwendet, um jede Zelle im definierten Range zu durchlaufen. Du kannst die Aktionen innerhalb der Schleife anpassen, je nach deinen Anforderungen.


Häufige Fehler und Lösungen

  1. Runtime Error 438: Object doesn't support this property or method.

    • Ursache: Ein Tippfehler oder die Verwendung einer falschen Methode.
    • Lösung: Überprüfe deine Codezeilen auf Tippfehler, insbesondere in den Methoden wie End(xlToRight).
  2. Zellen werden nicht nacheinander bearbeitet.

    • Ursache: Möglicherweise werden zu viele Zellen gleichzeitig selektiert.
    • Lösung: Stelle sicher, dass du die Auswahl und den Range korrekt definierst, um nur eine Zelle gleichzeitig zu bearbeiten.

Alternative Methoden

Es gibt verschiedene Ansätze, um alle Zellen einer Spalte in Excel VBA durchzulaufen. Hier ist eine Alternative, die die Verwendung von Dim und Range optimiert:

Sub AlternativeRefreshSave()
    Dim Slctn As Range
    Dim Zelle As Range

    Set Slctn = Sheets("Sheet1").Range("B3:B" & Cells(Rows.Count, "B").End(xlUp).Row)

    For Each Zelle In Slctn
        Zelle.Copy
        ' Füge hier den Code zum Einfügen in ein anderes Blatt hinzu
    Next Zelle
End Sub

In diesem Beispiel wird die gesamte Spalte B bis zur letzten gefüllten Zelle durchlaufen.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du in jedem Worksheet die Spalten mit der gleichen Überschrift aktualisieren kannst:

Sub UpdateColumns()
    Dim Slctn As Range
    Dim Zelle As Range
    Dim wks As Worksheet

    Set Slctn = Sheets("Sheet1").Range("B3:B" & Cells(Rows.Count, "B").End(xlUp).Row)

    For Each Zelle In Slctn
        Zelle.Copy
        For Each wks In Worksheets
            If wks.Name <> "Sheet1" Then
                ' Suche nach der Überschrift in der ersten Zeile
                Dim foundCell As Range
                Set foundCell = wks.Rows(1).Find(What:=Zelle.Value, LookIn:=xlValues, LookAt:=xlWhole)
                If Not foundCell Is Nothing Then
                    foundCell.Offset(1, 0).PasteSpecial
                End If
            End If
        Next wks
    Next Zelle
End Sub

In diesem Beispiel wird die Spalte in einem Worksheet kopiert und in die entsprechende Spalte in anderen Worksheets eingefügt, wenn die Überschrift übereinstimmt.


Tipps für Profis

  • Vermeide übermäßiges Selectieren von Zellen, da dies die Leistung deines Codes beeinträchtigen kann. Arbeite direkt mit Objekten.
  • Teste immer deinen Code in einer Kopie deiner Arbeitsmappe, um unerwartete Änderungen zu vermeiden.
  • Nutze die Option Explicit Anweisung zu Beginn deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ich keine Runtime Errors bekomme? Stelle sicher, dass alle verwendeten Objekte korrekt deklariert sind und keine Tippfehler in den Methoden vorhanden sind.

2. Funktioniert dieser Code in jeder Excel-Version? Ja, dieser VBA-Code sollte in den meisten Versionen von Excel funktionieren, solange du die grundlegenden VBA-Funktionen nutzt. Achte darauf, dass du die spezifischen Funktionen korrekt anwendest.

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