Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Evaluate

Betrifft: VBA Evaluate von: WalterK
Geschrieben am: 03.11.2014 18:29:26

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

  

Betrifft: AW: VBA spricht Englisch! Wenn 'Evaluate' ... von: Luc:-?
Geschrieben am: 03.11.2014 18:43:51

…auch mit dt Fmln fktionieren würde, Walter,
gäb's die Eingangshürde bei Auswertung von BedingtFormat-RegelFmln nicht… :-]
Gruß, Luc :-?


  

Betrifft: AW: VBA spricht Englisch! Wenn 'Evaluate' ... von: WalterK
Geschrieben am: 03.11.2014 19:41:16

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


  

Betrifft: AW: VBA spricht Englisch! Wenn 'Evaluate' ... von: Daniel
Geschrieben am: 03.11.2014 19:55:25

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


  

Betrifft: AW: VBA spricht Englisch! Wenn 'Evaluate' ... von: WalterK
Geschrieben am: 03.11.2014 20:24:56

Hallo,

Danke Daniel für die kompetente und ausführliche Hilfe.

Servus, Walter


  

Betrifft: ...wobei die TextForm des ZählErgebnisses ... von: Luc:-?
Geschrieben am: 03.11.2014 20:16:57

…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 :-?