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

Forumthread: Mehrfachbereich an Rng Variable zuweisen

Mehrfachbereich an Rng Variable zuweisen
Peter
Guten Abend
Ich habe verschiedene Tabellen mit einem Eingabebereich, der sicher über mehrere, nicht zusammenhängende Zellbereiche erstreckt (in allen Tabellen gleich).
In einer dieser Tabellen - in welchen übrigens in jeder Zelle A1 "Berechnung" steht - ist dieser Eingabebereich mit "tabEingabe" benannt.
Ich möchte nun mit nachstehden Code alle Eingabebereiche löschen.
Dabei scheitere ich schon bei der Zeile Set rngEingabe = Range("tabEingabe").Address (Fehler beim Kompilieren, Typen unverträglich; "Address" wird markiert).
Im Direkbereich erhalte ich mit
?range("tabEingabe").Address(0,0)
F15:F45,L56,H59,J59,L60
Wie kann ich diese Adresse einem Range zuweisen, der dann dazu dient, dass in genau diesen Zeilen in den Tabellen, in welchen in A1 "Berechnung" steht, die Inhalte gelöscht werden?
Danke für eine Antwort.
Gruss, Pete
Public Sub inhalte_tab_loeschen()
Dim objWorksheet As Worksheet
Dim rngEingabe As Range
Set rngEingabe = Range("tabEingabe").Address
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
For Each objWorksheet In ThisWorkbook.Worksheets
If objWorksheet.Range("A1") = "Berechnung" Then _
objWorksheet.rngEingabe.Clear
Next
Set objWorksheet = Nothing
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub

Anzeige
AW: Mehrfachbereich an Rng Variable zuweisen
17.09.2010 17:45:51
{Boris}
Hi Pete,
die Address-Eigenschaft gibt den Datentyp String zurück - rngEingabe ist aber vom Datentyp Range. Und einen String kannst Du nicht mit der Set-Anweisung an einen Range übergeben.
Also: Einfach nur die Address-Eigenschaft weglassen :-)
Grüße Boris
AW: Mehrfachbereich an Rng Variable zuweisen
17.09.2010 17:59:23
Peter
Hallo Boris
Vielen Dank. Das hat mir eingeleuchtet.
Jetzt habe ich allerdings das Problem, dass bei objWorksheet.rngEingabe.Clear
"Methode oder Datenobjekt" nicht gefunden wird (bei dieser Fehlermeldung wird rngEingabe makriert.
Was ist denn da falsch?
Gruss, Peter (letztes Mal habe ich den "r" unterschlagen
Dim objWorksheet As Worksheet
Dim rngEingabe As Range
Set rngEingabe = Range("tabEingabe")
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
For Each objWorksheet In ThisWorkbook.Worksheets
If objWorksheet.Cells("A1") = "Kommissionsberechnung" Then _
objWorksheet.rngEingabe.Clear
Next
Set objWorksheet = Nothing
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Anzeige
AW: Mehrfachbereich an Rng Variable zuweisen
17.09.2010 18:07:18
{Boris}
Hi Peter,
den Code hatte ich mir gar nicht weiter angeschaut.
Da ist so einiges im Argen.
Cells("A1") gibbet nicht - entweder Cells(1, 1) oder Range("A1")
Durch die Namensvergabe tabEingabe bestimmst Du einen Bereich, der sich auf ein ganz spezielles Tabellenblatt bezieht. Demnach kannst Du den Bereich auch nur stand-alone, und nicht noch mit vorgeschaltetem Worksheet ansprechen.
objWorksheet.rngEingabe.Clear
kann dann also nicht funktionieren.
Aber eh ich weiterschreibe: Was genau möchtest Du erreichen? Ich glaube nämlich, dass das alles viel einfacher geht...
Grüße Boris
Anzeige
AW: Mehrfachbereich an Rng Variable zuweisen
17.09.2010 20:58:58
Peter
Hallo Boris
Vielen Dank für den Hinweis wegen Cells - schräg von mir!
Nepumuk hat mir den Hinweis gegeben, der mich zum gewünschten Ziel geführt hat.
Vielen Dank für die Unterstützung und Gruss, Peter
AW: Mehrfachbereich an Rng Variable zuweisen
17.09.2010 18:11:13
Nepumuk
Hallo,
der Name tabEingabe ist nicht in der Tabelle objWorksheet sondern in der aktiven Tabelle.
Wenn du den selben Bereich ansprechen willst, dann so:
objWorksheet.Range(rngEingabe.Address).Clear
Gruß
Nepumuk
Anzeige
AW: Mehrfachbereich an Rng Variable zuweisen
17.09.2010 20:57:07
Peter
Hallo Nepumuk
Das hat mich ans Ziel gebracht.
Vielen Dank und Gruss, Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrfachbereich an Rng Variable in Excel zuweisen


Schritt-für-Schritt-Anleitung

Um einen Mehrfachbereich an eine Rng Variable in Excel zuzuweisen, kannst du die folgenden Schritte befolgen:

  1. Definiere eine Rng Variable:

    Dim rngEingabe As Range
  2. Setze den Bereich: Anstatt die Address-Eigenschaft zu verwenden, weise direkt den benannten Bereich zu.

    Set rngEingabe = Range("tabEingabe")
  3. Durchlaufe alle Arbeitsblätter: Verwende eine Schleife, um durch jedes Arbeitsblatt zu iterieren.

    For Each objWorksheet In ThisWorkbook.Worksheets
  4. Prüfe eine Bedingung: Überprüfe, ob die Zelle A1 den gewünschten Wert hat.

    If objWorksheet.Range("A1") = "Berechnung" Then
  5. Lösche die Inhalte im Bereich: Nun kannst du die Inhalte im definierten Bereich löschen.

    objWorksheet.Range(rngEingabe.Address).Clear
  6. Schließe die Schleife: Beende die Schleife und setze die Anwendungseinstellungen zurück.

    Next

Häufige Fehler und Lösungen

  • Typen unverträglich: Wenn du versuchst, Set rngEingabe = Range("tabEingabe").Address zu verwenden, erhältst du einen Fehler. Verwende stattdessen Set rngEingabe = Range("tabEingabe").

  • Methode oder Datenobjekt nicht gefunden: Wenn du objWorksheet.rngEingabe.Clear verwendest, wird ein Fehler angezeigt. Das liegt daran, dass rngEingabe nicht als Methode des Arbeitsblatts verfügbar ist. Verwende objWorksheet.Range(rngEingabe.Address).Clear.


Alternative Methoden

Eine alternative Methode, um einen Rng Bereich zu definieren, ist die Verwendung von Names in Excel. Du kannst den Bereich auch über die Name-Eigenschaft ansprechen, z.B.:

Set rngEingabe = ThisWorkbook.Names("tabEingabe").RefersToRange

Praktische Beispiele

Hier ist ein komplettes Beispiel für ein Makro, das den beschriebenen Prozess durchführt:

Public Sub Inhalte_Tab_Loeschen()
    Dim objWorksheet As Worksheet
    Dim rngEingabe As Range
    Set rngEingabe = Range("tabEingabe")

    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

    For Each objWorksheet In ThisWorkbook.Worksheets
        If objWorksheet.Range("A1") = "Berechnung" Then
            objWorksheet.Range(rngEingabe.Address).Clear
        End If
    Next

    Set objWorksheet = Nothing
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
End Sub

Tipps für Profis

  • Vermeide die Verwendung von Address, wenn du mit Range arbeitest. Dies kann zu Verwirrung führen, wenn du versuchst, einen Rng Bereich zu definieren.

  • Nutze With-Anweisungen: Das verbessert die Lesbarkeit deines Codes.

    With objWorksheet
        If .Range("A1") = "Berechnung" Then
            .Range(rngEingabe.Address).Clear
        End If
    End With

FAQ: Häufige Fragen

1. Was bedeutet rng in Excel VBA?
rng ist eine Abkürzung für "Range" und bezeichnet einen Zellbereich in Excel VBA.

2. Wie setze ich eine Rng Variable?
Du kannst eine Rng Variable mit Set rng = Range("Bereichsname") festlegen.

3. Was ist der Unterschied zwischen Address und Value?
Address gibt die Zelladresse als String zurück, während Value den Inhalt der Zelle zurückgibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige