gibt es eine VBA-Entsprechung zu der Tabellenfunktion
REST(Zahl, Divisor)?
Ich wollte mit einer Ereignisprozedur die Nachkommastellen der
Target-Zelle ermitteln.
In de folgenden Prozedur habe ich jeweils alle Zeilen bis auf eine
auskommentiert.
Das jeweilige Ergebnis steht als Kommentar hinter den Zeilen:
Private Sub Worksheet_Change(ByVal Target As Range)
'Debug.Print Evaluate("MOD(" & Target.Value & ",1)") 'Fehler 2015
'Debug.Print Evaluate("MOD( Target.Value ,1)") 'Fehler 2029, klar
'Debug.Print Evaluate("MOD( A1 ,1)") ' ok
Debug.Print Evaluate("MOD( 1.23 ,1)") 'ok
End Sub
Die Crux scheint zu sein, daß Target.Value jeweils mit einem
DezimalKOMMA dargestellt wird, wie ich bei Einzelschrittausführung
(Stop) beobachten konnte.
Die Lösunge des Evalute-Problems interessiert mich nach den vielen
Bastelversuchen jetzt mehr als die REST-Funktion in VBA (falls
existent).
--
Gruß Eberhard
XL 2000
nutze mod dazu. z.B.:
msgbox 20 mod 3
--
Regards
Frank Kabel
Frankfurt, Germany
"Eberhard Funke" <nos...@diabetes.info.de> schrieb im Newsbeitrag
news:cj468e$pf2$00$1...@news.t-online.com...
"Frank Kabel" <frank...@freenet.de> schrieb:
hatte ich zuerst auch gedacht, aber X Mod Y ist leider etwas anderes:
1.234 Mod 1 -->0
ich suche aber: =REST(1,234;1) --> 0,234
Und dann (s. unten in meinem Post) interessiert mich, warum
Debug.Print Evaluate("MOD(" & Target.Value & ",1)")
zu einem Fehler führt, bzw. wie diese Zeile richtig heißen müsste.
>
> hatte ich zuerst auch gedacht, aber X Mod Y ist leider etwas anderes:
> 1.234 Mod 1 -->0
>
> ich suche aber: =REST(1,234;1) --> 0,234
VBA hat diesen Operator anders implementiert. Wenn es Dir nur um den
dezimalteil geht, warum nicht
var=1.234-CInt(1.234)
>
> Und dann (s. unten in meinem Post) interessiert mich, warum
> Debug.Print Evaluate("MOD(" & Target.Value & ",1)")
> zu einem Fehler führt, bzw. wie diese Zeile richtig heißen müsste.
versuche mal:
Debug.Print Evaluate("=MOD(" & Target.Value & ",1)")
Frank
"Frank Kabel" <frank...@freenet.de> schrieb:
>Hi Eberhard
>[...]
>
[......]
> Wenn es Dir nur um den dezimalteil geht, warum nicht
>var=1.234-CInt(1.234)
>
Ja, der Workaround funktioniert. aber mein Interesse hatte sich mehr
auf dieVariante mit Evaluate & MOD (Tabellenfkt.) verlagert:
>> Debug.Print Evaluate("MOD(" & Target.Value & ",1)")
>> zu einem Fehler führt, bzw. wie diese Zeile richtig heißen müsste.
>
>versuche mal:
>Debug.Print Evaluate("=MOD(" & Target.Value & ",1)")
>
Das hatte ich auch schon probiert, gibt aber ebenfalls --> Fehler 2015
Sieh mal in meinem ersten Post, welche Zeilen funktionieren und welche
nicht, und beachte meinen dortigen Hinweis auf das Komma, vielleicht
führt das weiter.
> >> Debug.Print Evaluate("MOD(" & Target.Value & ",1)")
> >> zu einem Fehler führt, bzw. wie diese Zeile richtig heißen müsste.
> >
> >versuche mal:
> >Debug.Print Evaluate("=MOD(" & Target.Value & ",1)")
> >
> Das hatte ich auch schon probiert, gibt aber ebenfalls --> Fehler
2015
Muss am Samstag liegen :-)
funktioniert bei mir ohne Probleme. Wie ist denn die Zelle formatiert,
in der Du den wet eingibst?.
Du kannst mir auch gerne mal das Sheet mit diesem Fehler schicken.
Frank
Frank Arendt-Theilen <> schrieb:
>Hallo Eberhard,
>versuch mal folgende Variante:
>Debug.Print Evaluate("MOD(" & _
> WorksheetFunction.Substitute(Target.Value, ",", ".") & ",1)")
>
>
>MfG Frank
>_____________________________________________
>Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
>Website: http://www.xl-faq.de; Auftragsprogrammierung
funktioniert und bestätigt meine Vermutung bezüglich des Kommas.
Was mich allerdings noch etwas wundert, ist, daß die Zeile
Debug.Print Evaluate("MOD( A1 ,1)") mit A1=1Komma234.
In diesem Fall wird A1 offensichtlich in 1Punkt234 umgewandelt,
Target.Value aber bleibt 1Komma234 (mit Stop Befehl und Intellisense
abgefragt).
Ich hatte es auch so probiert:
x = CDbl(Target.Value)
Debug.Print Evaluate("MOD(" & x & ",1)")
aber das funktioniert ebenfalls nicht.
"Frank Kabel" <frank...@freenet.de> schrieb:
>Hi Eberhard
ich vermute mal stark, Du hattest denTest mit Deiner englischen
Version durchgeführt?
Ich habe Deinen Vorschlag eben nochmals mit einer jungfräulichen Mappe
(also Format Standard) mit demselben Fehler-Ergebnis wiederholt.
Nein, natürlich in meiner deutschen Version ;-)
>
> Ich habe Deinen Vorschlag eben nochmals mit einer jungfräulichen
Mappe
> (also Format Standard) mit demselben Fehler-Ergebnis wiederholt.
mailst du mir die Mappe mal zu?
Frank
"Frank Kabel" <frank...@freenet.de> schrieb:
[.....]
>mailst du mir die Mappe mal zu?
>
>Frank
>
habe ich gestern gemacht. Ist sie angekommen?
--
Regards
Frank Kabel
Frankfurt, Germany
"Eberhard Funke" <nos...@diabetes.info.de> schrieb im Newsbeitrag
news:cj8oft$uu1$01$1...@news.t-online.com...
"Frank Kabel" <frank...@freenet.de> schrieb:
>Habe Dir auch schon geantwortet :-)
bei mir ist leider bis jetzt noch nichts angekommen.
Vielleicht hatte ich den Hinweis vergessen, NIXSPAM aus meiner Adresse
zu entfernen? (Sollte eigentlich automatisch mit versandt werden).