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

Forumthread: 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

Anzeige

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

Anzeige
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

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

Anzeige
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

Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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