Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1388to1392
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
Inhaltsverzeichnis

VBA Evaluate

VBA Evaluate
03.11.2014 18:29:26
WalterK
Hallo,
Ich habe beide Varianten ausprobiert, es kommt aber die Meldung "Laufzeitfehler 13, Typen unverträglich".
Wo liegt hier der Fehler!
Sub Zählenwenn()
Dim ZählenÜ As Long
'        ZählenÜ = Evaluate("ZÄHLENWENN(F125:F141;""ü"")")
ZählenÜ = [ZÄHLENWENN(F125:F141;""ü"")]
End Sub
Danke und Servus, Walter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA spricht Englisch! Wenn 'Evaluate' ...
03.11.2014 18:43:51
Luc:-?
…auch mit dt Fmln fktionieren würde, Walter,
gäb's die Eingangshürde bei Auswertung von BedingtFormat-RegelFmln nicht… :-]
Gruß, Luc :-?

AW: VBA spricht Englisch! Wenn 'Evaluate' ...
03.11.2014 19:41:16
WalterK
Hallo Luc,
so geht aber auch nicht. Wo liegt der Fehler?
Sub Zählenwenn()
Dim ZählenÜ As String
ZählenÜ = Application.Evaluate("=COUNTIF(F125:F141;""ü"")")
End Sub
Servus, Walter

AW: VBA spricht Englisch! Wenn 'Evaluate' ...
03.11.2014 19:55:25
Daniel
Hi
das "englsich-sprechen" bedeutet nicht nur englische Funktionsnamen, sondern auch das Komma als Parametertrennzeichen (in deutsch Semikolon) und bei Dezimalzahlen den Punkt als Dezimalzeichen (in deutsch Komma).
bzw bist du sicher, das du das Ergebnis einer Zählung als Textstring haben willst?
für VBA bietest sich anstelle des Evaluate oft an, die Excelformeln über Worksheetfunction zu nutzen.
Das hat den Vorteil, dass man ggf die Objektvariablen direkt verwenden kann und nicht einen Textstring daraus basteln muss.
Ausserdem hilft die Intellisense dann Rechtschreibfehler zu vermeiden.
für dein Beispiel:
ZählenÜ = WorksheetFunction.CountIf(Range("F125:F141"), "ü")
bzw mit Variabeln:
dim rngSuch as range
dim SuchWert as string
dim ZählenÜ as long
set rngSuch = Range("F125:F141")
SuchWert = "ü"
ZählenÜ = Worksheetfunction.CountIf(rngSuch, SuchWert)
Gruß Daniel

Anzeige
AW: VBA spricht Englisch! Wenn 'Evaluate' ...
03.11.2014 20:24:56
WalterK
Hallo,
Danke Daniel für die kompetente und ausführliche Hilfe.
Servus, Walter

...wobei die TextForm des ZählErgebnisses ...
03.11.2014 20:16:57
Luc:-?
…in jedem Fall allein an deiner Deklaration liegt, Walter;
da hier aber ein ZellBereich verwendet wird, muss kein Übergabe-String gebastelt wdn, was sonst leicht erforderlich wdn kann. Allerdings hat die Verwendung von Evaluate noch einen anderen Nachteil. Macht man das in einer UDF, die auch in ZellFmln eingesetzt wdn soll, kann der FmlText idR nicht evaluiert wdn (XLM-Fkt AUSWERTEN → Evaluieren innerhalb einer Evaluierung geht nicht). Mit der Evaluierung von UDFs hängt anderenfalls aber auch ein bedeutender Vorteil zusammen… ;-)
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige