Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: String in Range umwandeln?

String in Range umwandeln?
14.10.2012 12:07:09
GordonGekko
Guten Morgen!
Momentan bin ich auch nach befragen von Google mit meinem Wissen am Ende.
Wie kann ich eigentlich einen String in eine Range umrechnen?
LG

Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String in Range umwandeln?
14.10.2012 12:08:39
Hajo_Zi
was ist das?
Range(Variable)=123

was steht denn im String ? kwT
14.10.2012 12:11:14
Matthias

AW: was steht denn im String ? kwT
14.10.2012 12:15:07
GordonGekko
Sub Replace()
Dim FNSX As String
Do
FNSX = "Ersetzen von Werten"
FNSX = Application.InputBox("Spalte angeben der Wert zu ersetzen ist", FNSX, Type:=2)
If FNSX "" Then
If IsNumeric(FNSX) Then
MsgBox "Bitte Spalte als Buchstaben eingeben!"
Else
Exit Do
End If
End If
Loop
- weiter Code
Range(FNSX).Select
Bei Range(FNSX).Select kommt nun der Fehler, ist mir auch klar, immerhin habe ich FNSX als String deklariert. Kann ich das nicht irgendwie so konvertieren das ich dass als Range auswählen kann?
LG

Anzeige
AW: was steht denn im String ? kwT
14.10.2012 12:19:03
Hajo_Zi
das läuft bei mir Fehlerfrei durch. Makros solltest Du kein VBA Namen geben.
Gruß Hajo

AW: was steht denn im String ? kwT
14.10.2012 12:23:34
GordonGekko
Wenn ich den Code laufen lasse den ich hier gepostet habe, kommt "Laufzeitfehler 1004: Die Methode Range für das Objetkt ist fehlgeschlagen!"
- Okay den Tipp werde ich mir schon einmal zu Herzen nehmen.
LG

Anzeige
AW: was steht denn im String ? kwT
14.10.2012 12:23:49
GordonGekko
Wenn ich den Code laufen lasse den ich hier gepostet habe, kommt "Laufzeitfehler 1004: Die Methode Range für das Objetkt ist fehlgeschlagen!"
- Okay den Tipp werde ich mir schon einmal zu Herzen nehmen.
LG

AW: was steht denn im String ? kwT
14.10.2012 12:25:15
Hajo_Zi
und das kann ich nicht nachvollziehen mit diesem Code
Sub Replace()
Dim FNSX As String
Do
FNSX = "Ersetzen von Werten"
FNSX = Application.InputBox("Spalte angeben der Wert zu ersetzen ist", FNSX, Type:=2)
If FNSX  "" Then
If IsNumeric(FNSX) Then
MsgBox "Bitte Spalte als Buchstaben eingeben!"
Else
Exit Do
End If
End If
Loop
'- weiter Code
Range(FNSX).Select
End Sub
Gruß Hajo

Anzeige
AW: Eingabe
14.10.2012 12:40:55
Hajo_Zi
ich gebe selbstverständlich eine Zellenbezeichnung ein dafür ist die Variable ja da.
Gruß Hajo

ich dachte es läuft durch bei Dir ;-) oT
14.10.2012 12:43:04
Matthias

AW: ich dachte es läuft durch bei Dir
14.10.2012 12:44:47
Hajo_Zi
Hallo Matthias,
Nein es kommt eine Abfrage zur Eingabe.
Gruß Hajo

Anzeige
und dann läuts durch, z.B bei Eingabe von C ? owt
14.10.2012 12:47:49
C

AW: und dann läuts durch, z.B bei Eingabe von C ? owt
14.10.2012 12:50:41
C
Hallo Matthioas,
C ist keine Zellbezeichnung, ich hatte geschrieben ich gebe eine Zellbezeichnung ein dafür ist die Variable ja vorgesdehen.
Gruß Hajo

machst Du Dir da nicht zu leicht ?
14.10.2012 12:55:12
Matthias
Hallo Hajo
MsgBox "Bitte Spalte als Buchstaben eingeben!"
Da wird ein Spaltenbuchstabe angefordert, keine Zelladresse!
Gruß Matthias

Anzeige
AW: machst Du Dir da nicht zu leicht ?
14.10.2012 12:56:11
Hajo_Zi
Hallo Matthias,
ich habe mich an das gehalten was im Beitrag steht er wollte mit der Variablen eine Zelle auswählen.
Gruß Hajo

ok ...
14.10.2012 13:03:47
Matthias
Hallo Hajo
er wollte mit der Variablen() eine Range auswählen.
Wie passt das aber dann zusammen
 If IsNumeric(FNSX) Then
MsgBox "Bitte Spalte als Buchstaben eingeben!"

schon bemerkt ?
Gruß Matthias

Anzeige
AW:nur Fragen
14.10.2012 13:05:54
Hajo_Zi
Hallo Matzthias,
dazu gab es kerine Frage es ging um die Zeikle mit select. Ich befasse mich nur mit den angesprochenen Problemen. Die anderen wird er wohl selber lösen, sonst hätte er sie angesprochen.
Gruß Hajo

Anzeige
dann reden wir mE aneinander vorbei ... owT
14.10.2012 13:08:41
Matthias

um Dir wirklich helfen zu können ...
14.10.2012 13:15:11
Matthias
Hallo
... poste doch bitte mal ein Beispiel in dem verständlich ist was Du erreichen möchtest.
Gruß Matthias

AW: was steht denn im String ? kwT
14.10.2012 17:32:49
Tino
Hallo,
für eine Spalte könntest Du es so angeben.
Ich würde aber auch prüfen ob die Eingabe überhaupt ein gültiger Range ist und evtl. dem Benutzer die Möglichkeit einräumen das Programm abzubrechen um z.Bsp. nachzusehen welche Spalte es ist.
Sub Ersetzen_()
Dim FNSX As String, rngRange As Range


Do
    FNSX = "Ersetzen von Werten"
    FNSX = Application.InputBox("Spalte angeben der Wert zu ersetzen ist", FNSX, Type:=2)
    On Error Resume Next 'Error-Anweisung einschalten 
    Set rngRange = Columns(FNSX)
    If FNSX <> "" Then
        If rngRange Is Nothing Then
            If MsgBox("Bitte einen Gültigen Buchstaben für eine Spalte eingeben!" & vbCr & _
                      "Wollen Sie die Eingabe wiederholen?", vbExclamation + vbYesNo) = vbNo Then
                Exit Sub 'Programm abbrechen 
            End If
        Else
            Exit Do
        End If
    End If
Loop
On Error GoTo 0 'Error-Anweisung ausschalten 

'... 
'... 

rngRange.Select 'oder auch Columns(FNSX) 
End Sub
Gruß Tino

Anzeige
Klärungsversuch
14.10.2012 13:17:22
Erich
Hi Gordon,
was genau soll der User denn eingeben können? Ein paar Beispiele:
- einen (oder zwei oder drei) Spaltenbuchstaben? A oder BB oder CCC
- eine gültige Spaltenadresse? A:A oder A:C oder BB:BE
- eine gültige Bereichsadresse? A3:C7 oder B:D oder 2:4
- oder was sonst?
Wenn das nicht klar ist, können wir hier lange diskutieren...
Hast du mal ausprobiert, ob du beim Application.InputBox() nicht besser mit Type:=8 statt Type:=2 arbeitest?
Dann wird eine gültige Adresse erwartet.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

String in Range umwandeln


Schritt-für-Schritt-Anleitung

Um einen String in eine Range umzuwandeln, kannst du folgenden VBA-Code verwenden. Dieser Prozess ermöglicht es dir, eine Eingabe von einem Benutzer zu akzeptieren und diese dann in einen Range-Objekt umzuwandeln:

Sub StringToRange()
    Dim FNSX As String
    Dim rngRange As Range

    Do
        FNSX = Application.InputBox("Bitte Spalte angeben, die ersetzt werden soll:", Type:=2)
        If FNSX <> "" Then
            On Error Resume Next
            Set rngRange = Range(FNSX)
            On Error GoTo 0

            If Not rngRange Is Nothing Then
                rngRange.Select
                MsgBox "Range erfolgreich ausgewählt: " & rngRange.Address
                Exit Do
            Else
                MsgBox "Ungültige Eingabe! Bitte eine gültige Zelladresse eingeben."
            End If
        End If
    Loop
End Sub

Dieser Code verwendet die Application.InputBox-Methode, um den Benutzer nach einer Zelladresse zu fragen. Falls die Eingabe ungültig ist, wird eine Fehlermeldung angezeigt.


Häufige Fehler und Lösungen

  1. Laufzeitfehler 1004: "Die Methode Range für das Objekt ist fehlgeschlagen!"

    • Lösung: Dieser Fehler tritt auf, wenn die Eingabe nicht als gültige Zelladresse interpretiert werden kann. Stelle sicher, dass der Benutzer einen gültigen Range eingibt (z.B. "A1" oder "B:B").
  2. Fehler bei der Eingabe: Benutzer gibt einen Zahlenwert statt einer Zelladresse ein.

    • Lösung: Verwende eine Validierung, um sicherzustellen, dass nur Buchstaben als Spaltenbezeichnungen akzeptiert werden.

Alternative Methoden

Eine alternative Methode zur Umwandlung eines Strings in eine Range ist die Verwendung der Evaluate-Methode:

Sub StringToRangeEvaluate()
    Dim FNSX As String
    Dim rngRange As Range

    FNSX = Application.InputBox("Geben Sie eine Zelladresse ein:", Type:=2)
    Set rngRange = Evaluate(FNSX)

    If Not rngRange Is Nothing Then
        rngRange.Select
        MsgBox "Der Range wurde erfolgreich ausgewählt: " & rngRange.Address
    Else
        MsgBox "Ungültige Zelladresse!"
    End If
End Sub

Diese Methode kann oft flexibler sein, da sie verschiedene Arten von Eingaben akzeptiert.


Praktische Beispiele

  • Beispiel 1: Umwandlung eines Strings, der "A1" eingibt, in die entsprechende Range:

    FNSX = "A1" ' Dies ist ein gültiger String
    Set rngRange = Range(FNSX) ' rngRange ist nun die Zelle A1
  • Beispiel 2: Umwandlung einer gesamten Spalte:

    FNSX = "B:B" ' Dies ist ein gültiger String für eine gesamte Spalte
    Set rngRange = Range(FNSX) ' rngRange ist nun die gesamte Spalte B

Diese Beispiele zeigen, wie einfach es ist, Excel-Strings in eine Range umzuwandeln.


Tipps für Profis

  • Verwende immer die On Error-Anweisung, um Fehler abzufangen und eine benutzerfreundliche Meldung anzuzeigen.
  • Berücksichtige, dass Benutzer möglicherweise nicht die korrekten Zelladressen eingeben. Validierungen helfen, Eingabefehler zu minimieren.
  • Nutze die VBA Range to String-Funktionalität, um Ranges in Strings umzuwandeln, wenn du beispielsweise einen Bereich in einem Bericht darstellen möchtest.

FAQ: Häufige Fragen

1. Wie kann ich einen Range in einen String umwandeln? Du kannst die Address-Eigenschaft eines Range-Objekts verwenden:

Dim rng As Range
Set rng = Range("A1")
Dim strAddress As String
strAddress = rng.Address ' strAddress enthält jetzt "$A$1"

2. Kann ich mehrere Zelladressen in einem String verarbeiten? Ja, du kannst mehrere Zelladressen wie "A1, B2, C3" in einem String angeben und dann mit der Range-Methode arbeiten:

Set rngRange = Range("A1, B2, C3")

Mit diesen Informationen bist du bestens gerüstet, um Strings in Ranges in Excel VBA effektiv umzuwandeln.

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