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

Forumthread: Variable Spalte in Range ansprechen

Variable Spalte in Range ansprechen
13.07.2017 10:12:16
Philipp
Hallo zusammen,
ich scheitere daran, den folgenden Code für eine variable Spalte zu nutzen. Aktuell ist alles auf Spalte "M" ausgelegt. Ich habe aktuell "Spalte" als String deklariert und mit der jeweils angeklickten Spalte belegt. Wie kann ich jetzt in den unten stehenden Code die Variable "Spalte" einbinden?
For Each rngfiltercell In Range("M15:M" & Range("M65536").End(xlUp).Row).SpecialCells(12)
If Range(rngfiltercell.Address).Value = "x" Then
Range(rngfiltercell.Address).Value = ""
Else
End if
Next
Danke und liebe Grüße,
Philipp
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable Spalte in Range ansprechen
13.07.2017 10:17:21
Hajo_Zi
For Each rngfiltercell In Range(Spalte & "15:" & Spalte & Range(Spalte &"65536").End(xlUp).Row).SpecialCells(12)

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: Variable Spalte in Range ansprechen
13.07.2017 10:21:21
Beverly
Hi Philipp,
vielleicht so:
Dim intSpalte As Integer
Dim lngLetzte As Long
intSpalte = 14
lngLetzte = Columns(intSpalte).End(xlUp).Row
For Each rngfiltercell In Range(Cells(5, inspalte), Cells(lngLetzte, intSpalte)).SpecialCells( _
12)


Anzeige
AW: Variable Spalte in Range ansprechen
13.07.2017 10:36:53
Werner
Hallo Philipp,
Code wirkt sich in der Spalte aus, die vorher ausgewählt (angeklickt) wurde.
Public Sub Test()
Dim loSpalte As Long
Dim loLetzte As Long
Dim rngBereich As Range
Dim rngFiltercell As Range
With Worksheets("Tabelle1") 'Tabelle anpassen
loSpalte = Selection.Column
loLetzte = .Cells(.Rows.Count, loSpalte).End(xlUp).Row
Set rngBereich = .Range(.Cells(15, loSpalte), .Cells(loLetzte, loSpalte))
For Each rngFiltercell In rngBereich.SpecialCells(12)
If rngFiltercell.Value = "x" Then
rngFiltercell.ClearContents
End If
Next rngFiltercell
End With
Set rngBereich = Nothing
End Sub
Gruß Werner
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Variable Spalte in Range ansprechen


Schritt-für-Schritt-Anleitung

Um eine variable Spalte in einem Excel VBA-Skript anzusprechen, kannst du die folgenden Schritte befolgen:

  1. Deklariere die Variablen:

    Dim loSpalte As Long
    Dim loLetzte As Long
    Dim rngBereich As Range
  2. Bestimme die Spalte: Hier kannst du entweder eine feste Spalte wählen oder die aktuell ausgewählte Spalte nutzen.

    loSpalte = Selection.Column ' Aktuell ausgewählte Spalte
  3. Finde die letzte Zeile in der Spalte:

    loLetzte = Cells(Rows.Count, loSpalte).End(xlUp).Row
  4. Definiere den Bereich:

    Set rngBereich = Range(Cells(15, loSpalte), Cells(loLetzte, loSpalte))
  5. Verwende die Schleife zur Bearbeitung:

    For Each rngFiltercell In rngBereich.SpecialCells(12)
       If rngFiltercell.Value = "x" Then
           rngFiltercell.ClearContents
       End If
    Next rngFiltercell

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004"
    Ursache: Der ausgewählte Bereich ist leer.
    Lösung: Stelle sicher, dass der Bereich, den du ansprechen möchtest, Daten enthält, bevor du SpecialCells verwendest.

  • Fehler: "Typen unverträglich"
    Ursache: Falscher Datentyp bei der Variablen.
    Lösung: Überprüfe, ob die Datentypen korrekt deklariert sind, insbesondere bei der Verwendung von Long für Zeilennummern.


Alternative Methoden

Eine weitere Möglichkeit, um eine variable Spalte in einem VBA-Skript anzusprechen, ist die Verwendung von Cells:

Dim intSpalte As Integer
intSpalte = 14 ' Beispiel für Spalte N
Dim lngLetzte As Long
lngLetzte = Columns(intSpalte).End(xlUp).Row

For Each rngfiltercell In Range(Cells(15, intSpalte), Cells(lngLetzte, intSpalte)).SpecialCells(12)
    If rngfiltercell.Value = "x" Then
        rngfiltercell.ClearContents
    End If
Next

Hierbei kannst du die Spalte dynamisch anpassen, indem du den Wert von intSpalte änderst.


Praktische Beispiele

Beispiel 1: Wenn du die Spalte "M" nutzen möchtest, aber die Spalte variabel machen willst:

Dim Spalte As String
Spalte = "M" ' Variable für Spaltenbezeichnung

For Each rngfiltercell In Range(Spalte & "15:" & Spalte & Range(Spalte & "65536").End(xlUp).Row).SpecialCells(12)
    If rngfiltercell.Value = "x" Then
        rngfiltercell.ClearContents
    End If
Next

Beispiel 2: Um eine spezifische Spalte aufgrund einer Bedingung auszuwählen:

Dim loSpalte As Long
loSpalte = 3 ' Beispiel: Spalte C

' Verarbeite die Zellen in der gewählten Spalte
For Each rngFiltercell In Range(Cells(15, loSpalte), Cells(Cells(Rows.Count, loSpalte).End(xlUp).Row, loSpalte)).SpecialCells(12)
    If rngFiltercell.Value = "x" Then
        rngFiltercell.ClearContents
    End If
Next

Tipps für Profis

  • Debugging: Verwende Debug.Print um die Werte von Variablen zu überprüfen.
  • Optimierung: Setze Application.ScreenUpdating = False am Anfang deines Codes und Application.ScreenUpdating = True am Ende, um die Ausführungsgeschwindigkeit zu erhöhen.
  • Fehlerbehandlung: Implementiere On Error Resume Next um das Skript nicht bei einem Fehler zu stoppen. Achte jedoch darauf, dass du solche Fehler nachverfolgst.

FAQ: Häufige Fragen

1. Wie spreche ich eine Zelle mit einer Variablen an?
Du kannst die Cells-Methode verwenden, um Zellen dynamisch anzusprechen, z.B. Cells(zeilenNummer, spaltenNummer).

2. Was bedeutet SpecialCells(12)?
Das Argument 12 steht für xlCellTypeVisible, was bedeutet, dass nur sichtbare Zellen im angegebenen Bereich verarbeitet werden.

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