Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellbezug aus Zellformel (Zellverweis) herstellen

Zellbezug aus Zellformel (Zellverweis) herstellen
17.03.2008 13:51:00
Arthur
Hallo.
Im Moment versuche ich einen Zellbezug über eine Zellformel zu erstellen, was irgendwo hakt. Mit den Zellen auf die dadurch verwiesen wird möchte ich arbeiten.
Beispiel:
In einer Zelle verweise ich auf eine andere Zelle in der Excel-Datei (=Tabelle2!D3). Nun möchte ich das dort genannte Ziel als Startbereich nehmen und mittels VBA auswerten. Dazu müsste ich das Zielworksheet, Zeile und Spalte ermitteln können.
Da es sich auch um einen benannnten Bereich handeln kann, gestaltet sich herauszufinden wo das Ziel ist allerdings schwieriger.
Gibt es einen Befehl der mir sagen kann, wo mein Ziel liegt? Quasi ein Befehl, der mir den Nachfolger, also die Adresse des Nachfolgers nennt? Etwas wie Selection.Sucessor?
Oder wie könnte ich den Nachfolger auswählen? Mit Range("Tabelle!D3").Select funktioniert das nicht.
Besten Dank für eine Lösung.
-Arthur

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellbezug aus Zellformel (Zellverweis) herstel
17.03.2008 14:12:44
Mag
Hi,
Formel in Sheets(1), Zelle A1:

Option Explicit
Sub ttt()
MsgBox Sheets(1).Range("A1").Formula
End Sub


so?
Gruss

Ganz so leicht ist es nicht ...
17.03.2008 14:36:00
Arthur
Hallo MAg.
Ganz so leicht ist die Lösung nicht:
- weder weiss ich, welches Sheet sich hinter einem benannten Range befindet
- noch kann ich eine Adresse per Namen einfach ansprechen
Denn:
- "A1" kann in meinem Beispiel "Tabelle!A1" oder "NameXYZ" sein.
Gruß
Arthur

AW: Zellbezug aus Zellformel (Zellverweis) herstellen
17.03.2008 14:47:04
Tino
Hallo,
meinst du es so?

'ActiveCell.Formula = die Zelle die diese Formel enthält.
Sub test()
Dim Zelle As String
Zelle = Replace(ActiveCell.Formula, "=", "")
MsgBox Range(Zelle)
End Sub


Gruß
Tino

Anzeige
Wäre zu schön
17.03.2008 14:52:00
Arthur
Hallo Tino.
Das wäre zu schön, aber dann gäbe es keine Unterscheidung zwischen der Zelle "A1" und einem Namen. Ausserdem würde dieses selbst bei unbenannten Referenzen nur auf dem aktuellen Tabellenblatt funktionieren. Das Ansprechen eines Bereichs per: Range("Tabelle2!A1").Select funktioniert nicht, wenn das Blatt nicht aktiv ist.
Leider...
Gruß
Arthur

AW: Wäre zu schön
17.03.2008 14:58:00
Tino
Hallo,
mit select so.

Sub test()
Dim Zelle As String
Zelle = Replace$(ActiveCell.Formula, "=", "")
If InStr(Zelle, "!") > 0 Then
Sheets(Left$(Zelle, InStr(Zelle, "!") - 1)).Select
Range(Right$(Zelle, Len(Zelle) - InStr(Zelle, "!"))).Select
Else
Range(Zelle).Select
End If
End Sub


Gruß
Tino

Anzeige
AW: Zellbezug aus Zellformel (Zellverweis) herstel
17.03.2008 14:50:55
Rudi
Hallo,
so?

Sub tt()
Dim rTest As Range, vntTest
Set rTest = ActiveCell
vntTest = Split(rTest.FormulaLocal, "!")
If UBound(vntTest) = 0 Then
vntTest = Split(ThisWorkbook.Names(Replace(rTest.FormulaLocal, "=", "")) _
.RefersToLocal, "!")
End If
Sheets(Replace(vntTest(0), "=", "")).Activate
Range(vntTest(1)).Select
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Zellbezug aus Zellformel (Zellverweis) herstel
17.03.2008 15:19:37
Rudi
Hallo,
Verbesserung:

Sub tt()
Dim rngTest As Range
Set rngTest = RangeFromFormula(ActiveCell.FormulaLocal)
'   MsgBox rngTest.Parent.Name
'   MsgBox rngTest.Address
rngTest.Parent.Activate
rngTest.Select
End Sub



Function RangeFromFormula(strFormula As String) As Range
Dim vntTest, nTest As Name
Dim strSheet As String, strRange As String
On Error Resume Next
Set nTest = ThisWorkbook.Names(Replace(strFormula, "=", ""))
On Error GoTo 0
If nTest Is Nothing Then
vntTest = Split(strFormula, "!")
If UBound(vntTest) = 0 Then
strSheet = ActiveSheet.Name
strRange = Replace(vntTest(0), "=", "")
Else
strSheet = Replace(vntTest(0), "=", "")
strRange = vntTest(1)
End If
Else
vntTest = Split(nTest.RefersToLocal, "!")
strSheet = Replace(vntTest(0), "=", "")
strRange = vntTest(1)
End If
Set RangeFromFormula = Sheets(strSheet).Range(strRange)
End Function


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
;0) sieht gut aus
17.03.2008 15:39:04
Arthur
Hallo Rudi.
Das sieht gut aus. Die Hoffnung per einfacher Zeile eine Lösung zu haben zeichnet sich ja nicht ab. Aber so geht's.
Danke.
Cheerio
-Arthur

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige