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

VBA - Formelergebnis aus Zelle auslesen

VBA - Formelergebnis aus Zelle auslesen
15.08.2002 11:26:49
Ralph
Ist wahrscheinlich ein simples Problem, aber ...

Ich habe einige Beschriftungen in Datentabellen lokalisiert, indem ich die Namen aus einem gesonderten Blatt hole, je nachdem welche Sprache der Benutzer ausgewählt hat (mittels "WVerweis").

Gleichzeitig möchte ich nun aus VBA mit einer Funktion auf diese Daten zugreifen und die Beschriftungen als "Orientierung" nutzen (bspw. ".Find(Label)"), um die entsprechende Datenzeile zu selektieren.

Leider wirft VBA mir einen Laufzeitfehler 91 ("Objektvariable oder With-Blockvariable nicht festgelegt"). Ersetze ich die Labels durch direkte Eingaben (ohne Lokalisierungsformel), geht's prima.

Wie lese ich bei VBA das Ergebnis der Formel in einer Zelle aus und nicht die Formel selbst?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA - Formelergebnis aus Zelle auslesen
15.08.2002 11:39:42
mathias r.
Debug.Print Range("A1").Formula ' gibt =1+2
Debug.Print Range("A1").Value ' gibt 3
Debug.Print Range("A1") ' gibt 3
Re: VBA - Formelergebnis aus Zelle auslesen
15.08.2002 12:25:54
Ralph
Danke! Das funtkioniert hier zwar auch, hilft aber leider nicht weiter. Ich poste mal die bisherige Prozedur - vielleicht habe ich ja auch irgendeinen Fehler übersehen. Die Mischkurse werden problemlos eingelesen, aber beim Einlesen der Daten muckt er dann. Test-Aufruf im Direktfenster mit '?Umrechnung ("VJ", "AE", "EUR", 3)'.

Ergänze ich die Suchspalte mit "AE" (statt einer Formel), läuft die Schleife für das Einlesen der Daten problemlos durch.


Dim Mischkurs(1 To 12), Perfcardwert(1 To 12) As Single
Public Function Umrechnung(Tabelle, Umrobjekt, Kurs, aktMonat)

Set Kursblatt = Workbooks("PerfCard.xls").Worksheets("Mischkurse") 'Referenz auf Mischkursblatt
Set Datenblatt = Workbooks("PerfCard.xls").Worksheets(Tabelle) 'Referenz auf Datenblatt

Debug.Print Tabelle, Umrobjekt, Kurs, aktMonat

'Arrays löschen

For i = 1 To 12
Mischkurs(i) = 0
Perfcardwert(i) = 0
Next i


' Mischkurse einlesen

Kursblatt.Activate
For i = 1 To aktMonat
Kursblatt.Range("A:A").Find(Kurs).Activate 'Erste Zelle in Mischkurszeile aktivieren
Set Monatskurs = ActiveCell.Offset(0, i + 1) 'Erster Mischkurs-Wert in Spalte 3
Mischkurs(i) = Monatskurs.Value 'Mischkurs-Array füllen
Debug.Print i; Mischkurs(i);
Next i

Debug.Print 'Zeilenumbruch

' Daten in Landeswährung einlesen (jeweils eine Zeile bzw. ein Wert, z.B. AE, U, EBIT)

Datenblatt.Activate
For i = 1 To aktMonat
Datenblatt.Range("A:A").Find(Umrobjekt).Activate 'Erste Zelle in Datenzeile aktivieren
Set Monatswert = ActiveCell.Offset(0, i) 'Erster Datenwert in Spalte 2
Perfcardwert(i) = Monatswert.Value 'Datenarray füllen
Debug.Print i; Perfcardwert(i);
Next i


End Function

Anzeige
Re: VBA - Formelergebnis aus Zelle auslesen
15.08.2002 14:29:33
mathias r.
Mir fällt nur auf, das mit
Dim Mischkurs(1 To 12), Perfcardwert(1 To 12) As Single
der Mischkurs als Variant und Perfcardwert als Single deklariert wird. (Nicht wie du vielleicht annimmst beide als Single)
Dadurch "schluckt" Mischkurs alles, Perfcardwert dagegen nur Zahlenwerte. Gibt es da ein Problem?
Versuchs mal beide als Variant oder mit
Perfcardwert(i) = CSng(Monatswert.Value)
Re: VBA - Formelergebnis aus Z
15.08.2002 15:03:20
Ralph
Leider keine Veränderung. Ich hatte in der Tat angenommen, daß ich beide als "Single" dimensionieren würde - Danke für den Hinweis! Auch der Versuch mit CSng hilft leider nicht.
Irgendwie muss ich sowohl für das Auslesen als auch für die .Find-Methode tatsächliche Daten in der entsprechenden Zelle haben und keine Formel. Seltsam irgendwie. Kann ich vielleicht die Ausgabe von Debug.Print irgendwie in die Array-Elemente umleiten (so á la Unix: "Debug.Print(Zelle) > Array(index)"? Debug.Print funktioniert ja wie gewünscht...
Anzeige
Re: VBA - Formelergebnis aus Z
15.08.2002 16:27:28
mathias r.
Da liegt offensichtlich ein Typenproblem vor.
Durchlaufe den Code schrittweise und schau was aus der Zelle gelesen wird. Debug.Print interpretiert alles zwangsläufig als String. Versuch auch den Zellwert als String umzuwandeln oder wie bereits vorgeschlagen als Variant einzulesen.
Es geht bestimmt!
Re: VBA - Formelergebnis aus Z
15.08.2002 16:53:42
Ralph
*Seufz* Es will einfach nicht. Inzwischen habe ich so ziemlich alles auf Variant stehen, habe es mit der Umwandlung versucht, die Variablen angeschaut - nickesse! Aber wenn der Prophet nicht zum Berg kommt...
Ich habe jetzt links von der Zeilenbeschriftung eine weitere Spalte eingefügt, dort die Labels im (deutschen) Klartext eingefügt und die Spalte dann ausgeblendet. So kann der User mit lokalisierten Beschriftungen arbeiten, ich spare mir den Aufwand, die Labels in VBA zu ändern und komme mit der Tabelle weiter. Ist vielleicht nicht elegant, aber wenigstens funktioniert es.

Nichtsdestotrotz vielen Dank für Deine Unterstützung!

*leicht-frustriert*
Ralph


Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige