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

Forumthread: Range Variable - Spaltenwert verändern

Range Variable - Spaltenwert verändern
15.07.2005 12:14:33
Benjamin
Hallo zusammen,
bin in VBA eher Anfänger...
Bin dabei eine benutzerdef. Funktion zu erstellen.
Ich übergebe der Funktion die Variable "Suchbereich" (Range)
Soweit so gut...
Jetzt muss ich allerdings den Bereich in der Variable verändern. Leider habe ich keine Ahnung wie der Wert in der Variable aussieht, da ich ja im Normalfall nicht weiß was für einen Bereich der User eingibt.
Verändert werden muss die Anfangsspalte des Bereiches.
Habe schon versucht mit Suchbereich.column zum Ziel zu kommen (nach dem Muster "Suchbereich.Column = Suchbereich.Column + 2" - irgendwie ohne Erfolg.
Hat hier jemand einen Denkansatz?
Danke im Voraus!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Range Variable - Spaltenwert verändern
15.07.2005 12:49:43
WernerB.
Hallo Benjamin,
wie gefällt Dir das?

Sub Benjamin()
Dim Suchbereich As Range, SuBe2 As Range, _
zo As Long, zu As Long, _
sl As Integer, sr As Integer
With ActiveSheet
Set Suchbereich = .Range("D3:H16")
zo = Suchbereich.Row                                     'Zeile oben
zu = Suchbereich.Rows.Count + Suchbereich.Row - 1        'Zeile unten
sl = Suchbereich.Column                                  'Spalte links
sr = Suchbereich.Columns.Count + Suchbereich.Column - 1  'Spalte rechts
Set SuBe2 = .Range(.Cells(zo, sl + 2), .Cells(zu, sr))
End With
MsgBox SuBe2.Address(False, False)
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Range Variable - Spaltenwert verändern
15.07.2005 14:12:53
Benjamin
Hallo,
grundsätzlich ganz gut.
Leider funktioniert das nicht. Ich denke, dass man in einer Funktion nicht mit ActiveSheet usw. arbeiten kann - möglicherweise ? ?
Kann da einer was zu sagen?
Hänge die Datei gleich mal an - wenn einer reinsehen mag.
Gruß Benjamin
AW: Range Variable - Spaltenwert verändern
15.07.2005 15:37:36
WernerB.
Hallo Benjamin,
meine este Antwort war nicht als fertige Lösung gedacht, sondern nur als Denkanstoß.
Ich habe auch absolut keine Lust, mich durch Deine "Elefanten-Funktion" zu quälen; trotzdem kommt hier noch ein zweiter Denkanstoß - diesmal ohne "ActiveSheet":

Function Benjamin(Suchbereich As Range) As String
Dim Suchbereich2 As Range, _
zo As Long, zu As Long, _
sl As Integer, sr As Integer
zo = Suchbereich.Row                                     'Zeile oben
zu = Suchbereich.Rows.Count + Suchbereich.Row - 1        'Zeile unten
sl = Suchbereich.Column                                  'Spalte links
sr = Suchbereich.Columns.Count + Suchbereich.Column - 1  'Spalte rechts
Set Suchbereich2 = Range(Cells(zo, sl + 2), Cells(zu, sr))
MsgBox "alter Suchbereich:  " & Suchbereich.Address(False, False) & _
vbCr & "neuer Suchbereich:  " & Suchbereich2.Address(False, False)
End Function

Gruß
WernerB.
Anzeige
AW: Range Variable - Spaltenwert verändern
18.07.2005 08:59:24
benjamin
Vielen Dank!
Funktioniert jetzt!!!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spaltenwerte in Excel VBA mit Range-Variablen verändern


Schritt-für-Schritt-Anleitung

Um in Excel VBA einen Spaltenwert zu verändern, während du eine Range-Variable nutzt, folge diesen Schritten:

  1. Erstelle eine neue Funktion: Definiere eine Funktion, die einen Range-Parameter akzeptiert.

    Function VerändereSpalte(Suchbereich As Range) As String
  2. Bestimme die Zeilen und Spalten: Nutze die Eigenschaften Row, Rows.Count, Column und Columns.Count, um die Grenzen deines Suchbereichs festzulegen.

    Dim zo As Long, zu As Long, sl As Integer, sr As Integer
    zo = Suchbereich.Row
    zu = Suchbereich.Rows.Count + Suchbereich.Row - 1
    sl = Suchbereich.Column
    sr = Suchbereich.Columns.Count + Suchbereich.Column - 1
  3. Setze die neue Range: Erstelle eine neue Range-Variable, die den gewünschten Bereich darstellt, in dem du die Spalte verändern möchtest.

    Dim Suchbereich2 As Range
    Set Suchbereich2 = Range(Cells(zo, sl + 2), Cells(zu, sr))
  4. Gib das Ergebnis aus: Verwende eine Message Box, um den alten und neuen Suchbereich anzuzeigen.

    MsgBox "alter Suchbereich: " & Suchbereich.Address(False, False) & _
    vbCr & "neuer Suchbereich: " & Suchbereich2.Address(False, False)
  5. Funktion aufrufen: Rufe die Funktion im VBA-Editor auf, um das Ergebnis zu sehen.


Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"

    • Dies passiert oft, wenn die Range-Variable nicht korrekt gesetzt ist. Stelle sicher, dass du die Range richtig zuweist, wie in den obigen Beispielen.
  • Fehler: "Method 'Range' of object '_Global' failed"

    • Überprüfe, ob der Suchbereich im aktiven Blatt existiert. Nutze ActiveSheet.Range nur, wenn du sicher bist, dass das aktive Blatt der richtige Kontext ist.
  • Lösung: Verwende ThisWorkbook

    • Wenn du sicherstellen möchtest, dass du auf das richtige Arbeitsblatt zugreifst, verwende ThisWorkbook.Worksheets("SheetName").Range(...).

Alternative Methoden

  • Direktes Arbeiten mit ActiveSheet: Wenn du den aktuellen Arbeitsblattkontext benötigst, kannst du ActiveSheet.Range verwenden. Achte darauf, dass du immer den richtigen Kontext im Blick hast.

  • Verwendung von Variablen in Range: Du kannst auch Variablen für Zeilen- und Spaltennummern verwenden, um dynamisch auf Bereiche zuzugreifen. Zum Beispiel:

    Dim rowNumber As Integer
    Dim colNumber As Integer
    rowNumber = 3
    colNumber = 1
    Set myRange = ActiveSheet.Range(Cells(rowNumber, colNumber), Cells(rowNumber + 5, colNumber + 2))

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du einen Bereich mit Variablen in VBA ansprechen kannst:

Sub Beispiel()
    Dim myRange As Range
    Dim startRow As Long, startCol As Long
    startRow = 1
    startCol = 1
    Set myRange = ActiveSheet.Range(Cells(startRow, startCol), Cells(startRow + 4, startCol + 3))
    MsgBox myRange.Address
End Sub

Dieses Beispiel gibt die Adresse des Bereichs von A1 bis D5 aus.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Fehler durch undeclared Variablen zu vermeiden.

  • Nutze With-Anweisungen: Um den Code lesbarer zu machen und die Ausführung zu optimieren, nutze With-Anweisungen.

    With ActiveSheet
      ' Dein Code hier
    End With
  • Debugging: Setze Breakpoints und nutze die Debugging-Funktionalitäten in VBA, um Probleme schneller zu identifizieren.


FAQ: Häufige Fragen

1. Kann ich auch mehrere Bereiche gleichzeitig ansprechen? Ja, du kannst mehrere Range-Variablen erstellen und in einer Funktion darauf zugreifen.

2. Wie kann ich einen Bereich dynamisch anpassen? Du kannst Variablen für die Zeilen- und Spaltennummern verwenden, um den Bereich basierend auf Benutzereingaben oder anderen Kriterien dynamisch zu ändern.

3. Was ist der Unterschied zwischen Range und Cells? Range wird verwendet, um einen spezifischen Bereich auszuwählen, während Cells eine spezifische Zelle innerhalb eines Arbeitsblatts anspricht, basierend auf ihrer Zeilen- und Spaltennummer.

Mit diesen Informationen und Tipps bist du gut gerüstet, um mit Range-Variablen in Excel VBA zu arbeiten und Spaltenwerte effektiv zu verändern!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige