Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA Penadant zu REST & Evaluate-Problem

0 views
Skip to first unread message

Eberhard Funke

unread,
Sep 25, 2004, 12:32:13 PM9/25/04
to
Hallo

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

Frank Kabel

unread,
Sep 25, 2004, 12:50:08 PM9/25/04
to
Hi

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...

Eberhard Funke

unread,
Sep 25, 2004, 1:43:00 PM9/25/04
to
Danke Frank,

"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.

Frank Kabel

unread,
Sep 25, 2004, 1:50:49 PM9/25/04
to
Hi Eberhard
[...]

>
> 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

Eberhard Funke

unread,
Sep 25, 2004, 2:49:41 PM9/25/04
to
Danke 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.

Frank Kabel

unread,
Sep 25, 2004, 4:16:22 PM9/25/04
to
Hi Eberhard
[...]

> >> 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

Eberhard Funke

unread,
Sep 26, 2004, 6:14:43 AM9/26/04
to
Danke 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.

Eberhard Funke

unread,
Sep 26, 2004, 6:14:43 AM9/26/04
to
Danke Frank,

"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.

Frank Kabel

unread,
Sep 26, 2004, 11:12:30 AM9/26/04
to
Hi Herbert
[...]

> >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
>
> ich vermute mal stark, Du hattest denTest mit Deiner englischen
> Version durchgeführt?

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


Eberhard Funke

unread,
Sep 27, 2004, 6:08:01 AM9/27/04
to
Hall Frank,

"Frank Kabel" <frank...@freenet.de> schrieb:

[.....]


>mailst du mir die Mappe mal zu?
>
>Frank
>

habe ich gestern gemacht. Ist sie angekommen?

Frank Kabel

unread,
Sep 27, 2004, 6:09:38 AM9/27/04
to
Habe Dir auch schon geantwortet :-)

--
Regards
Frank Kabel
Frankfurt, Germany

"Eberhard Funke" <nos...@diabetes.info.de> schrieb im Newsbeitrag

news:cj8oft$uu1$01$1...@news.t-online.com...

Eberhard Funke

unread,
Sep 27, 2004, 9:10:03 AM9/27/04
to
Hallo Frank,

"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).

0 new messages