Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
984to988
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

benannter Bereich: Zelladresse links oben und ..

benannter Bereich: Zelladresse links oben und ..
07.06.2008 15:46:40
Peter
... rechts unten bestimmen.
Guten Tag
In möchte mittels VBA aus einem benannten Bereich die Zeile und die Spalte der Zelle oben links und die Zeile und die Spalte der Zelle unten rechts bestimmen.
?range("AAA1").address
$B$32:$H$37
Ergebnis 1: 32
Ergebnis 2: B
Ergebnis 3: 37
Ergebnis 4: H
Wie kann ich diese vier Werte einzeln am einfachsten aus dem Range"AAA1" ableiten?
Danke für alle Hinweise.
Gruss, Peter

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

Betreff
Datum
Anwender
Anzeige
AW: benannter Bereich: Zelladresse links oben und ..
07.06.2008 16:00:47
Daniel
Hi
mit der Split-Funktion.
diese Teilt einen Text anhand eines Trennzeichens (hier das $-Zeichen) in eine Array-Variable auf.
den störenden Doppelpunkt kann man über die REPLACE-Funktion eleminieren:

dim Ergenis() string
Ergebnis = Split(Replace(range("AAA1").address, ":", ""), "$")


auf die einzelnen Werte kannst du dann so zugreifen:
Ergebnis(0) : "B"
Ergebnis(1) : "32"
Ergebnis(2) : "H"
Ergebnis(3) : "37"
Gruß, Daniel
ps. funktioniert aber erst ab Office XP, in älteren Versionen leider nicht.

Anzeige
AW: benannter Bereich: Zelladresse links oben und ..
07.06.2008 17:36:00
Nepumuk
Hallo Daniel,
mal abgesehen von der unterschiedlichen Schreibweise der deklarierten und der verwendeten Variablen, und dass eine Deklaration: dim Ergenis() string ohne as zwischen Variablennamen und Variablentyp syntaktisch falsch ist, ist das Array was dabei herauskommt nicht so wie du denkst.
Denn Split trennt ja am vorgegebenen Zeichen und wenn du vier Trennzeichen hast, dann bekommst du natürlich ein Array mit fünf Einträgen und nicht wie von dir vermutet mit vier.
Schneide mal eine Wurst mit vier Schnitten auseinander, wie viele Stücke erhältst du?
Da vor dem ersten Trennzeichen nichts steht, bekommst du da einen leeren Arrayeintrag. Das erzeugte Array sieht also so aus:
Ergebnis(0) : ""
Ergebnis(1) : "B"
Ergebnis(2) : "32"
Ergebnis(3) : "H"
Ergebnis(4) : "37"
Gruß
Nepumuk

Anzeige
AW: benannter Bereich: Zelladresse links oben und ..
07.06.2008 20:37:30
Ramses
Hallo
hier noch eine Alternative
Option Explicit

Sub Test()
    Dim testStr As String
    Dim suchBereich As String
    Dim retRange As Integer
    suchBereich = "Testbereich"
    '******************************
    On Error Resume Next
    suchBereich = InputBox("Welche Namensbereich möchten Sie prüfen " & Chr$(10) & "z.B. Testbereich", "Namensbereich definieren", "Testbereich")
    If StrPtr(suchBereich) = 0 Or suchBereich = "" Then Exit Sub
    retRange = Int(InputBox("Welche Zelle möchten sie erhalten ? " & Chr$(10) & "0 = Startzelle, 1 = Endzelle", "Rückgabewert definieren", 0))
    If Not IsNumeric(retRange) Then Exit Sub
    On Error GoTo 0
    testStr = FindAddressXP(Range(suchBereich).Address(0, 0), retRange)
    MsgBox "Ergebnis aus Array" & Chr$(10) & _
    "Beginn: " & testStr & Chr$(10) & _
    "Spalte: " & Range(testStr).Column & Chr$(13) & _
    "Zeile: " & Range(testStr).Row, vbInformation + vbOKOnly, "Adresse"
    testStr = FindAddressAll(Range(suchBereich).Address(0, 0), retRange)
    MsgBox "Ergebnis ohne Array" & Chr$(10) & _
    "Beginn: " & testStr & Chr$(10) & _
    "Spalte: " & Range(testStr).Column & Chr$(13) & _
    "Zeile: " & Range(testStr).Row, vbInformation + vbOKOnly, "Adresse"
End Sub

Function FindAddressXP(strAdd As String, retVal As Integer) As String
    'by Ramses
    'Geht erst ab Office XP
    'retVal = 0 = Startadresse(z.B. A1), 1 = EndAddresse( z.B. C10)
    Dim strX As Variant
    If strAdd = "" Then
        FindAddressXP = ""
        Exit Function
    End If
    strX = Split(strAdd, ":")
    FindAddressXP = strX(retVal)
End Function

Function FindAddressAll(strAdd As String, retVal As Integer) As String
    'by Ramses
    'Geht für alle Office Versionen
    'retVal = 0 = Startadresse, 1 = EndAddresse
    Dim strX As Variant
    If strAdd = "" Then
        FindAddressAll = ""
        Exit Function
    End If
    If retVal = 0 Then
        FindAddressAll = Left(strAdd, InStr(1, strAdd, ":") - 1)
        ElseIf retVal = 1 Then
        FindAddressAll = Right(strAdd, Len(strAdd) - InStr(1, strAdd, ":"))
    End If
End Function


Gruss Rainer

Anzeige
AW: benannter Bereich: Zelladresse links oben und ..
07.06.2008 23:04:51
Gerd
Hallo Peter!

Sub ttt()
Range("AB32:AC37").Name = "AAA1"
With Range("AAA1")
Debug.Print .Row, Split(Columns(.Column).Address(0, 0), ":")(0), .Cells(.Count).Row, Split( _
Columns(.Cells(.Count).Column).Address(0, 0), ":")(0)
End With
End Sub


Gruß Gerd

AW: Vielen Dank allen! owT
08.06.2008 13:59:43
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige