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

Grundlagenfragen zu Dim und Set usw.

Forumthread: Grundlagenfragen zu Dim und Set usw.

Grundlagenfragen zu Dim und Set usw.
Jörg-HH
Guten Abend zusammen
warum funktioniert in der Beispieldatei https://www.herber.de/bbs/user/70741.xls
der Befehl Range("a1").Value = "bubu" anstandslos, aber wenn ich den Weg mit Set...usw. und rng("a1").Value = "bubu" gehe, klappt nix...?
Grüße - Jörg
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Grundlagenfragen zu Dim und Set usw.
24.07.2010 23:52:30
Nepumuk
Hallo,
weil Range eine Eigenschaft ist die Parameter benötigt. Wenn du alle Zellen einer Tabelle an eine Objektvariable verweisen willst, musst du die Cells-Eigenschaft benutzen. Wenn du dieser Eigenschaft keine Item-Eigenschaft mit gibst, liefert sie dir alle Zellen einer Tabelle zurück.
Gruß
Nepumuk
Anzeige
rng als OBJEKT + Synonym für Range
25.07.2010 00:03:33
NoNet
Hallo Jörg,
mit Dim rng as Range definierst Du diese Variable als Objekt-Variable (das ist ein RANGE !!).
Daher musst Du dieser Varablen auch ein Object vom Typ RANGE zuweisen.
Ein Range ist ein Tabellenblattbereich, also eine einzelne Zelle, mehrere Zellen, eine oder mehrere Spalten oder Zeilen oder zahlreiche nicht zusammenhängende Zellbereiche.
Dem zugeordneten Bereich kannst Du dann einen Wert geben, hier ein funktionierendes Beispiel :
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Tabelle1").Range("A1")
rng.Value = "bubu"
Die Variable rng wird also quasi als Synonym für ThisWorkbook.Worksheets("Tabelle1").Range("A1") verwendet !
rng("A1") gibt es in diesem Sinn nicht, da "A1" ja bereits der zugewiesene Bereich ist !
Du könntest allenfalls einer bestimmten Zelle in diesem zugeordneten Bereich einen Wert zuweisen :
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Tabelle1").Range("A1:C10")
rng(2,2).Value = "abc" '2 Zeile, 2.Spalte des zugewiesenen Bereiches => Zelle B2
Gruß, NoNet
Anzeige
Verstanden. - Danke, Jungs...! oT
25.07.2010 11:47:33
Jörg-HH
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Grundlagen zu Dim und Set in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Variable in VBA für einen Zellbereich zu definieren, gehst du wie folgt vor:

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Schreibe den folgenden Code:

    Dim rng As Range
    Set rng = ThisWorkbook.Worksheets("Tabelle1").Range("A1")
    rng.Value = "bubu"
  4. Dieser Code definiert rng als Range-Objekt und weist ihm die Zelle "A1" zu. Anschließend wird der Wert "bubu" in diese Zelle geschrieben.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt."

    • Lösung: Stelle sicher, dass du Set rng = ... verwendest, um die Range-Variable korrekt zuzuweisen.
  • Fehler: rng("A1").Value = "bubu" funktioniert nicht.

    • Lösung: Verwende stattdessen rng.Value = "bubu" oder weise rng einen spezifischen Bereich zu, z.B. Set rng = ThisWorkbook.Worksheets("Tabelle1").Range("A1:C10").

Alternative Methoden

Eine alternative Methode zur Verwendung von Set rng ist die direkte Zuweisung des Wertes ohne die Verwendung einer Range-Variable:

Range("A1").Value = "bubu"

Jedoch ist die Verwendung von Dim rng As Range und Set rng nützlich, wenn du mit mehreren Zellen arbeitest oder wiederholt auf denselben Zellbereich zugreifen möchtest.


Praktische Beispiele

Hier sind einige praktische Beispiele, um das Verständnis zu vertiefen:

  1. Zugriff auf einen Bereich:

    Dim rng As Range
    Set rng = ThisWorkbook.Worksheets("Tabelle1").Range("A1:C10")
    rng.Value = "Test"  ' Setzt den Wert in alle Zellen des Bereichs
  2. Bestimmte Zelle im Bereich ansprechen:

    Dim rng As Range
    Set rng = ThisWorkbook.Worksheets("Tabelle1").Range("A1:C10")
    rng(2, 2).Value = "abc"  ' Setzt den Wert "abc" in Zelle B2

Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden.
  • Nutze das With...End With-Konstrukt, um den Code zu optimieren:

    With ThisWorkbook.Worksheets("Tabelle1").Range("A1:C10")
       .Value = "Test"
       .Interior.Color = RGB(255, 255, 0)  ' Hintergrundfarbe auf Gelb setzen
    End With

FAQ: Häufige Fragen

1. Was bedeutet rng? rng ist eine Abkürzung für "Range" und wird oft als Variable verwendet, um einen Zellbereich in VBA zu referenzieren.

2. Wie definiere ich eine Range-Variable in Excel VBA? Du kannst eine Range-Variable definieren mit Dim rng As Range und ihr einen Bereich zuweisen mit Set rng = ThisWorkbook.Worksheets("Tabelle1").Range("A1").

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