Excel-VBA: Definierten (Namen) Wert übergeben

Salu Kenner,

weiß jemand, wie ich in VBA auf einen Wert zugreifen kann, den ich in der Excel-Mappe mit „Einfügen -> Namen -> Definieren“ angelegt habe?

Und kann ich

Cells(y,x)

auch für ein bestimmtes Tabellenblatt spezifizieren, in der Art von

Sheet.Tabelle1.Cells(y,x)

oder muß ich jedesmal mit

ActiveSheet

wechseln?

Vielen Dank und schon mal einen schönen Abend :o)
-Rob.

Hallo Rob,

weiß jemand, wie ich in VBA auf einen Wert zugreifen kann, den
ich in der Excel-Mappe mit „Einfügen -> Namen -> Definieren“
angelegt habe?

MsgBox ThisWorkbook.Names(„huhu“).Value

Und kann ich

Cells(y,x)

auch für ein bestimmtes
Tabellenblatt spezifizieren, in der Art
von

Sheet.Tabelle1.Cells(y,x)

oder muß ich jedesmal
mit

ActiveSheet

wechseln?

Worksheets(„Tabelle1“).Cells(x,y)

Gruß
Reinhard

Salu Reinhard,

weiß jemand, wie ich in VBA auf einen Wert zugreifen kann, den
ich in der Excel-Mappe mit „Einfügen -> Namen -> Definieren“
angelegt habe?

MsgBox ThisWorkbook.Names(„huhu“).Value

Vielen Dank für Deine Hilfe. Doch leider gibt die Methode nur den Bezug (z. B. =‚Tabelle 1‘!$E$4), nicht den Wert aus (.Value kann man folgenlos durch RefersTo ersetzen oder auch ganz weglassen, ändert nix am Ergebnis). Mir ist das auch schleierhaft. Abhilfe schaffte folgende Funktion, die ich im hier http://www.cpearson.com/excel/DefinedNames.aspx fand

Function GetNameRefersTo(TheName As String) As String
 Dim S As String
 Dim HasRef As Boolean
 Dim R As Range
 Dim NM As Name
 Set NM = ThisWorkbook.Names(TheName)
 On Error Resume Next
 Set R = NM.RefersToRange
 If Err.Number = 0 Then
 HasRef = True
 Else
 HasRef = False
 End If
 If HasRef = True Then
 S = R.Text
 Else
 S = NM.RefersTo
 If StrComp(Mid(S, 2, 1), Chr(34), vbBinaryCompare) = 0 Then
 ' text constant
 S = Mid(S, 3, Len(S) - 3)
 Else
 ' numeric contant
 S = Mid(S, 2)
 End If
 End If
 GetNameRefersTo = S
End Function

Komisch, gell? Daß Deine Kurzfassung nicht funzt ist wirklich seltsam.

Worksheets(„Tabelle1“).Cells(x,y)

Werde ich ausprobieren.

Nochmals vielen Dank für Deine kompetente und häufige Hilfe hier im Forum. Superklasse :o)

Grüßken
-Rob.

MsgBox ThisWorkbook.Names(„huhu“).Value

Doch leider gibt die Methode nur
den Bezug (z. B. =‚Tabelle 1‘!$E$4), nicht den Wert aus

Hallo Rob,

msgbox ThisWorkbook.Names(„huhu2“).RefersToRange.Value

oder nimm eine der Funktionen.

Sub test()
MsgBox Wert("huhu") ' =Tabelle1!$A$1
MsgBox Wert("huhu2") ' =7
MsgBox Wert("huhu3") ' ="Haus"
End Sub
'
Function Wert(Namen As String)
On Error Resume Next
Wert = ThisWorkbook.Names(Namen).RefersToRange.Value
If Err.Number \> 0 Then
 Err.Clear
 Wert = Mid(ThisWorkbook.Names(Namen).Value, 2)
End If
If Err.Number \> 0 Then Wert = "Fehler"
End Function

Gruß
Reinhard