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

Bedeutung von "Evaluate"

Bedeutung von "Evaluate"
22.03.2006 07:54:27
"Evaluate"
Tach allerseits
in einem fremden Makro habe ich folgendes Konstrukt gefunden:
varUniqueKey = Evaluate(ActiveWorkbook.Names("UniqueKey").Value).Value
Das gleiche Resultat wird mit
varUniqueKey =Range("UniqueKey")
erreicht.
Frage: Was ist der Vorteil von "Evaluate" ?
Gruss yogi

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedeutung von "Evaluate"
22.03.2006 09:58:01
"Evaluate"
Hallo yogi,
Grundfunktion der Evaluate-Methode:
Diese Methode konvertiert einen Microsoft Excel-Namen in ein Objekt oder in einen Wert.
Beispiel:
Set Bereich = Evaluate("[MAPPE1.XLS]Tabelle1!A1:B20")
ist identisch mit
Set Bereich = Workbooks("MAPPE1.XLS").Sheets("Tabelle1").Range("A1:B20")
Statt die einzelnen Objekt-Typen nacheinander abzufragen/zuzuweisen, kann man mit Evaluate über den EXCEL-Namen des Objects direkt in VBA ein Object erzeugen und diesem Objekt dann Eigenschaften zuweisen oder Eigenschaften auslesen.
Die Evaluate-Methode vereinfacht also ggf. die Definition von Objekten. Warum der Programmierer in dem Beispiel mit dieser Methode arbeitet: ? Evtl. möchte er in seinem Code die verwendeten Objekte immer mit ihrem vollständigen Namen ansprechen, um Trouble zu mimimieren.
Gruß
Franz
Anzeige
AW: Bedeutung von "Evaluate"
22.03.2006 11:01:58
"Evaluate"
Tach Franz
Dank für die Hilfe. Ganz löst das meine Frage nicht. Ich hatte nicht den ganzen Code gezeigt, der sieht so aus:

Sub a
varUniqueKey = GetValueOfANamedRange("UniqueKey")
varKey1=GetValueOfANamedRange("Key1")
varKeyn=GetValueOfANamedRange("Keyn")
End Sub


Function GetValueOfANamedRange(ByVal strName) As Variant
GetValueOfANamedRange = Evaluate(ActiveWorkbook.Names(strName).Value).Value
End Function

wobei alle Referenzen in der gleichen Tabelle sind. Ich hätte das so gemacht:

Sub a
Dim awb As Workbook
Dim ash As Worksheet
Set awb = ActiveWorkbook
Set ash = awb.Sheets("Tabelle1")
With ash
uniqueKey = Range("UniqueKey")
varKey1 = Range("varKey1")
End With
Eine Vereinfachung mit Evaluate ist das kaum, zudem dürfte es langsamer sein.
Gruss yogi

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige