Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA + Buchstabe an Variable "anhängen"

VBA + Buchstabe an Variable "anhängen"
07.10.2014 14:29:08
Dominic
Hi,
durch folgenden Teil meines VBA Skripts erhalte ich die Anzahl der Teilnehmer die im Zellbereich von C16 bis C253 eingetragen wurden.
Dim Anzahl As Integer
Anzahl = WorksheetFunction.CountA(Worksheets("Datasheet1").Range("C16:C253")) + 15
' Range("C9").Value = Anzahl 'Testausgabe der Variable Anzahl
Dieser Wert ist z. B. 193 für 193 Teilnehmer und durch meine o. g. definition wird die 193 um 15 addiert, sprich hier wird der Wert 208 ausgegeben, (um die benötigte Zeilenangabe zu erhalten).
Durch folgende Abfrage möchte ich nun diese Variable in das folgende VBA Skript einbauen. Es gelingt mir aber nicht, da mir die Zeilenangabe aktuell nur als Zahl vorliegt, mir aber noch die Spaltenangabe davor fehlt. Es muss also vor der Variable "Anzahl" die Spalte A gesetzt werden damit der Bereich nun von A16:A208 lautet...
Wie bekomme ich das hin?
If [C2] = 1 Then
Range("A16:" & "A" & Anzahl).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("D6:D11"), Unique:=False

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA + Buchstabe an Variable "anhängen"
07.10.2014 14:31:40
Hajo_Zi
Range("A16:A" & Anzahl).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("D6:D" & Anzahl), Unique:=False
hätte ich mal vermutet.

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Buchstaben an eine Range-Variable anhängen


Schritt-für-Schritt-Anleitung

Um einen Buchstaben an eine Range-Variable in VBA anzuhängen, kannst du die folgende Methode verwenden. Angenommen, du hast bereits eine Variable Anzahl, die die Anzahl der Teilnehmer enthält, und du möchtest diese in einen Bereich von A16 bis A208 umwandeln.

  1. Definiere die Variable für die Teilnehmeranzahl:

    Dim Anzahl As Integer
    Anzahl = WorksheetFunction.CountA(Worksheets("Datasheet1").Range("C16:C253")) + 15
  2. Verwende die Variable in der Range: Du kannst die Range entsprechend anpassen, indem du den Buchstaben "A" vor die Anzahl-Variable setzt. So sieht der Code aus:

    If [C2] = 1 Then
       Range("A16:A" & Anzahl).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
       Range("D6:D11"), Unique:=False
    End If

Hierbei wird die Anzahl-Variable mit dem Buchstaben "A" kombiniert, um einen dynamischen Bereich zu erstellen.


Häufige Fehler und Lösungen

  • Fehler: Ungültiger Zellbereich

    • Lösung: Stelle sicher, dass die Variable Anzahl korrekt initialisiert ist. Überprüfe, ob der Zellbereich, auf den du zugreifst, tatsächlich Werte enthält.
  • Fehler: Typkonflikt

    • Lösung: Achte darauf, dass die Variable Anzahl als Integer deklariert ist. Wenn der Zellbereich leer ist, kann es zu einem Typkonflikt kommen. Verwende Long anstelle von Integer, um größere Zahlen zu unterstützen.

Alternative Methoden

Eine andere Möglichkeit, eine Range in VBA zu definieren, besteht darin, die vba range variable direkt in einer Funktion zu erstellen. Hier ist ein Beispiel:

Function GetParticipantRange() As Range
    Dim Anzahl As Integer
    Anzahl = WorksheetFunction.CountA(Worksheets("Datasheet1").Range("C16:C253")) + 15
    Set GetParticipantRange = Worksheets("Datasheet1").Range("A16:A" & Anzahl)
End Function

Du kannst dann diese Funktion aufrufen, um den Bereich zu erhalten.


Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie du die vba range variable in einer Filteroperation verwenden kannst:

Sub FilterParticipants()
    Dim Anzahl As Integer
    Anzahl = WorksheetFunction.CountA(Worksheets("Datasheet1").Range("C16:C253")) + 15

    If [C2] = 1 Then
        Range("A16:A" & Anzahl).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("D6:D11"), Unique:=False
    End If
End Sub

In diesem Beispiel wird die Filteroperation nur ausgeführt, wenn die Bedingung in C2 erfüllt ist.


Tipps für Profis

  • Verwende Long anstelle von Integer, um sicherzustellen, dass du auch mit großen Zahlen umgehen kannst.
  • Überprüfe immer, ob der Zellbereich, auf den du zugreifen willst, nicht leer ist, um Laufzeitfehler zu vermeiden.
  • Halte deinen Code sauber und kommentiere wichtige Zeilen, um die Lesbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Range-Variable immer aktuell ist? Um sicherzustellen, dass deine Range-Variable immer aktuell ist, kannst du sie jedes Mal neu berechnen, bevor du sie verwendest, z.B. durch das Einfügen der Berechnung in eine Subroutine.

2. Was passiert, wenn der Zellbereich leer ist? Wenn der Zellbereich leer ist, gibt die CountA-Funktion den Wert 0 zurück. Achte darauf, dass dein Code auch für diesen Fall entsprechend behandelt wird, um Fehler zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige