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

Range definieren

Forumthread: Range definieren

Range definieren
23.10.2002 16:30:45
Daniel
Hi,

ich stehe vor einem für mich grossen, für euch aber sicher kleinen Problem. Ich versuche anhand von zwei Zellwerten einen Range-Bereich zu definieren. Klingt ein bisserl abstrakt, darum zwecks Veranschaulichung hier eine nähere Beschreibung. Ich habe in Zelle A1 ein (Anfangs)datum, zB 1.1.2002 - in Zelle A2 das (End)datum, zB 1.8.2002, stehen. In den Zellen A3 bis Axxx habe ich eine Datumszeitreihe von 31.12.1998 bis heute. Nun möchte ich mit den in A1 und A2 definierten "Eckwerten" mittels eines VBA-Makros quasi automatisch den Range-Bereich festlegen. Es ist mir wichtig, dass dies möglichst flexibel ist, da ich die Werte in A1 und A2 verändern möchte und mittels des Makros danach die Range bestimmen möchte. Eingebunden werden soll diese Range in Folge dann in diverse if-then sowie for-next-Schleifen.

Ein ganz grosses THANXXX an denjenigen, der mir dabei weiterhelfen kann.

LG Daniel

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Range definieren
23.10.2002 16:39:15
Folker
Ich schreib dir mal auf welche Möglichkeiten es gibt um Ranges zu definieren.

Eine Zelle (A2):
range("A2") ^= cells(2,1)

Mehrere (A1 und A2):
range("A1:A2") ^= range(cells(1,1),cells(2,1)) ^= range(range("A1"),range("A1").offset(1,0))

Gehen auch kombinationen von range und cells.
Die cells VAriante empfiehlt sich, da damit auch variablen verwendet werden können.


Anzeige
Re: Range definieren
23.10.2002 16:51:54
PeterW
Hallo Daniel,

als Ansatz:

Gruß
Peter

Re: Range definieren
23.10.2002 16:53:54
Daniel
Folker, danke für die rasche Antwort. Ich habe mich wahrscheinlich nicht exakt genug formuliert. Das Problem ist es nicht, eine Range zwischen A1 und A2 zu definieren, sondern anhand der Werte (meiner Meinung nach müsste man über .Value gehen) in diesen beiden Zellen, die Range "irgendwo" im Bereich von A3 bis Axxx zu bestimmen. Mit anderen Worten: die beiden Werte in A1 und A2 bestimmen Anfang und Ende in der Datumszeitreihe darunter. Bildhaft dargestellt sollte es ungefähr so funktionieren:

Zelle A1 ... 02.01.02
Zelle A2 ... 05.01.02
-> ergibt Range("A4:A7")
oder ...
Zelle A1 ... 04.01.02
Zelle A2 ... 08.01.02
-> ergibt Range("A6:A10")

Zelle A3 ... 01.01.02
Zelle A4 ... 02.01.02
Zelle A5 ... 03.01.02
Zelle A6 ... 04.01.02
Zelle A7 ... 05.01.02
Zelle A8 ... 06.01.02
Zelle A9 ... 07.01.02
Zelle A10... 08.01.02

Mir geht es darum, dass ich anhand der Datumseingabe in A1 und A2 die Eckpunkte der Range definiere und mittels VBA die Range selbst bilde.

LG Daniel

Anzeige
Re: Range definieren
23.10.2002 17:05:22
Folker
Aso, aber auch kein Problem

Re: Range definieren
23.10.2002 17:25:52
Daniel
THANXXX a lot Folker, genau danach habe ich gesucht!

LG Daniel

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Range definieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Range-Bereich in Excel VBA zu definieren, insbesondere basierend auf den Werten in zwei Zellen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx) und wähle Einfügen > Modul.

  3. Schreibe den VBA-Code: Füge den folgenden Code in das Modul ein:

    Sub DefiniereRange()
       Dim StartDatum As Date
       Dim EndDatum As Date
       Dim Zeile As Long
       Dim Bereich As Range
    
       ' Werte aus den Zellen A1 und A2 einlesen
       StartDatum = Range("A1").Value
       EndDatum = Range("A2").Value
    
       ' Durchlaufe die Zellen in der Spalte A und finde die entsprechenden Daten
       For Zeile = 3 To Cells(Rows.Count, 1).End(xlUp).Row
           If Cells(Zeile, 1).Value >= StartDatum And Cells(Zeile, 1).Value <= EndDatum Then
               If Bereich Is Nothing Then
                   Set Bereich = Cells(Zeile, 1)
               Else
                   Set Bereich = Union(Bereich, Cells(Zeile, 1))
               End If
           End If
       Next Zeile
    
       ' Range ausgeben
       If Not Bereich Is Nothing Then
           MsgBox "Der definierte Bereich ist: " & Bereich.Address
       Else
           MsgBox "Kein passender Bereich gefunden."
       End If
    End Sub
  4. Führe das Makro aus: Drücke F5 oder gehe zu Run > Run Sub/UserForm, um das Makro auszuführen.

In diesem Beispiel wird der Range-Bereich basierend auf den Werten in A1 und A2 dynamisch definiert.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung"
    Lösung: Stelle sicher, dass die Zellen A1 und A2 tatsächlich Datumswerte enthalten. Andernfalls kann es zu einem Typenübereinstimmungsfehler kommen.

  • Fehler: "Bereich nicht gefunden"
    Lösung: Überprüfe, ob die Daten in den Zellen A3 bis Axxx tatsächlich innerhalb des angegebenen Datumsbereichs liegen.


Alternative Methoden

Du kannst auch die Methode Range mit Cells kombinieren, um flexibler zu sein:

Set Bereich = Range(Cells(Zeile, 1), Cells(Zeile + Anzahl - 1, 1))

Diese Methode erlaubt es dir, den Bereich mithilfe von Variablen zu definieren, was besonders nützlich ist, wenn du mit dynamischen Daten arbeitest.


Praktische Beispiele

  1. Definiere einen Bereich zwischen zwei Zellen:

    Set Bereich = Range(Cells(1, 1), Cells(2, 1)) ' entspricht A1:A2
  2. Verwende eine Schleife, um einen Bereich zu durchlaufen:

    For Each cell In Range("A3:A10")
       If cell.Value > 5 Then
           cell.Interior.Color = RGB(255, 0, 0) ' Färbe Zellen rot, wenn Wert > 5
       End If
    Next cell

Tipps für Profis

  • Nutze die Union-Methode, um mehrere Zellen zu einem Range zusammenzufassen.
  • Achte darauf, die Cells-Methode in Kombination mit Variablen zu verwenden, um flexible und dynamische Ranges zu erstellen.
  • Berücksichtige die Verwendung von Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.

FAQ: Häufige Fragen

1. Wie kann ich einen dynamischen Bereich in VBA definieren?
Du kannst die Cells-Methode verwenden, um einen Bereich dynamisch zu definieren, indem du die Zeilen- und Spaltennummern variabel gestaltest.

2. Was ist der Unterschied zwischen Range und Cells in VBA?
Range wird verwendet, um einen bestimmten Bereich von Zellen anzusprechen, während Cells eine spezifische Zelle innerhalb des Arbeitsblatts adressiert. Cells ist besonders nützlich, wenn du mit Variablen arbeitest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige