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

Forumthread: markierten Bereich als Range definieren

markierten Bereich als Range definieren
13.05.2009 14:58:21
Jakob
Hallo,
wie kann ich im folgenden Makro den markierten Bereich als Range definieren? Ich möchte den Bereich auf den dieses Makro angewendet werden soll im Code festschreiben, sondern durch eine vorherige Markiterung festlegen.
mit "For Each Zelle In Worksheets(BlattName).Range(Bereich)" klappt es leider nicht.

Sub Text_zu_Zahl()
Dim BlattName As String
BlattName = ActiveSheet.Name
Dim Bereich As Range
Set Bereich = Application.Selection
For Each Zelle In Worksheets("Tabelle1").Range("A1:D10")
s = Zelle.Value
If s  "" And IsNumeric(s) Then
s = s * 1
Zelle.Value = s
End If
Next Zelle
End Sub


Vielen Dank.
Gruß,
Jakob

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: markierten Bereich als Range definieren
13.05.2009 15:00:02
D.Saster
Hallo,
Set Bereich = Selection
For Each Zelle In Bereich
Gruß
Dierk
Besser,weil sicherer, wäre...
13.05.2009 16:06:50
Luc:-?
...Set Bereich = ActiveWindow.RangeSelection, Jakob & Dierk!
Gruß Luc :-?
AW: markierten Bereich als Range definieren
13.05.2009 15:00:15
Hajo_Zi
Halo Jakob,
ersetze
Worksheets("Tabelle1").Range("A1:D10")
durch Selection

Anzeige
AW: markierten Bereich als Range definieren
13.05.2009 15:11:52
Jakob
Hallo Hajo,
klappt wunderbar.
Bedeutet es, daß ich die folgenden Zeilen aus dem Code löschen kann?

Dim BlattName As String
Dim Bereich As Range
BlattName = ActiveSheet.Name
Set Bereich = Application.Selection


Gruß,
Jakob

Anzeige
AW: markierten Bereich als Range definieren
13.05.2009 15:14:15
Hajo_Zi
Halo Jakob,
ja, ich würde aber die Variablen S und Zelle definieren.
Gruß Hajo
AW: markierten Bereich als Range definieren
13.05.2009 15:17:42
Jakob
Hallo Hajo,
ich kenne mich da nicht sehr gut aus. Als was soll ich die Variable definieren?
Dim Zelle as Range
Dim S as ?
Gruß,
Jakob
Anzeige
AW: markierten Bereich als Range definieren
13.05.2009 15:21:11
Hajo_Zi
Hallo Jakob,
Zelle hätte ich auch so gesehen und S nur Dim S da Zellinhalt nicht klar
Gruß Hajo
AW: markierten Bereich als Range definieren
13.05.2009 15:28:27
Jakob
ok vielen Dank.
Darf ich eine weitere Frage stellen? Ich habe hier aus dem Forum den folgende Code. Dieser Code läuft schneller durch. Aber auch hier habe ich das Problem, daß der Range fest im Coder hinterlegt ist. Läßt sich hier auch der markierte Bereich als Range deklarieren?

Sub Text_zu_Zahl2()
Dim Bereich As Range
Set Bereich = IIf(IsEmpty(Range("AN2")), Range("AN2").End(xlDown), Range("AN2"))
Set Bereich = Range(Bereich, Cells(Rows.Count, Bereich.Column))
Bereich.TextToColumns Destination:=Bereich(1, 1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
End Sub


Vielen Dank.
Gruß,
Jakob

Anzeige
AW: markierten Bereich als Range definieren
13.05.2009 15:33:29
Hajo_Zi
Hallo Jakob,
ich habe jetzt nur wegen dem Bereich geschaut

Option Explicit
Sub Text_zu_Zahl2()
Dim Bereich As Range
Set Bereich = Selection
Bereich.TextToColumns Destination:=Bereich(1, 1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Set Bereich = Nothing
End Sub


Gruß Hajo

Anzeige
AW: markierten Bereich als Range definieren
13.05.2009 15:43:39
Jakob
Hallo Hajo,
leider bleibt er hier hängen

Bereich.TextToColumns Destination:=Bereich(1, 1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True


Weiß Du Rat?
Gruß,
Jakob

Anzeige
;

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
Anzeige

Infobox / Tutorial

Markierten Bereich als Range in Excel VBA definieren


Schritt-für-Schritt-Anleitung

Um den markierten Bereich in Excel VBA als Range zu definieren, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
  3. Schreibe das Makro:

    • Verwende den folgenden Code, um den markierten Bereich als Range zu definieren:
    Sub Text_zu_Zahl()
       Dim Bereich As Range
       Set Bereich = Selection ' Setze den Bereich auf die aktuelle Auswahl
       Dim Zelle As Range
       Dim s As Variant
    
       For Each Zelle In Bereich
           s = Zelle.Value
           If s <> "" And IsNumeric(s) Then
               s = s * 1
               Zelle.Value = s
           End If
       Next Zelle
    End Sub
  4. Führe das Makro aus:

    • Kehre zu Excel zurück, markiere den gewünschten Bereich und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Fehler: „Typenübereinstimmung“

    • Lösung: Stelle sicher, dass die Variablen korrekt deklariert sind. Zum Beispiel Dim s As Variant anstelle von Dim s As String.
  • Fehler: „Bereich ist leer“

    • Lösung: Überprüfe, ob der markierte Bereich tatsächlich Zellen enthält. Vermeide es, das Makro auszuführen, wenn keine Zellen ausgewählt sind.

Alternative Methoden

Eine alternative Methode, um den markierten Bereich zu definieren, ist die Verwendung von ActiveWindow.RangeSelection:

Sub Text_zu_Zahl_Alternative()
    Dim Bereich As Range
    Set Bereich = ActiveWindow.RangeSelection
    ' Rest des Codes hier...
End Sub

Diese Methode ist besonders nützlich, wenn du sicherstellen möchtest, dass der ausgewählte Bereich auch tatsächlich auf dem aktuellen Fenster basiert.


Praktische Beispiele

  1. Markierten Bereich in einer Tabelle berechnen:

    Sub BerechnungImMarkiertenBereich()
       Dim Bereich As Range
       Set Bereich = Selection
       MsgBox "Die Summe des markierten Bereichs ist: " & Application.WorksheetFunction.Sum(Bereich)
    End Sub
  2. Text in Zahlen umwandeln:

    Sub TextZuZahl()
       Dim Bereich As Range
       Set Bereich = Selection
       Dim Zelle As Range
       For Each Zelle In Bereich
           If IsNumeric(Zelle.Value) Then
               Zelle.Value = Val(Zelle.Value)
           End If
       Next Zelle
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Diese Anweisung zwingt dich, alle Variablen zu deklarieren, was Fehler vermeidet.
  • Teste deinen Code: Führe dein Makro in einer Testumgebung aus, bevor du es in echten Daten verwendest.
  • Verwende Fehlerbehandlung: Integriere On Error Resume Next, um unerwartete Fehler elegant zu handhaben.

FAQ: Häufige Fragen

1. Wie kann ich den markierten Bereich ermitteln, wenn ich mehrere Blätter habe? Du kannst den aktiven Bereich wie folgt ermitteln:

Dim Bereich As Range
Set Bereich = ActiveSheet.Selection

2. Ist es möglich, den markierten Bereich in einer anderen Arbeitsmappe zu verwenden? Ja, du kannst den Bereich über den Arbeitsmappennamen referenzieren:

Dim Bereich As Range
Set Bereich = Workbooks("AndereDatei.xlsx").ActiveSheet.Selection

3. Wie definiere ich einen festen Bereich zusätzlich zum markierten Bereich? Du kannst einen festen Bereich wie folgt kombinieren:

Dim Bereich As Range
Set Bereich = Union(Selection, Worksheets("Tabelle1").Range("A1:D10"))

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