Was ist bei diesem Code falsch?

...komplette Frage anzeigen

4 Antworten

.Value ist immer vom Typ des Eintrags der drin steht ---   "" ist jedoch immer vom Typ String  (das wäre nur mit Variant kompatibel).  Da könnte der Fehler sein.  Also Beispiel:  if  82 <> ""    (geht nicht, gibt "type missmatch" obwohl es natürlich vom menschlichen standpunkt betrachtet wahr ist)

Der Fehler könnte aber auch bei  \\\\ 60   oder  mod 60 liegen.  Denn das geht natürlich nur wenn Value vom Typ Zahl ist,   denn   "a" \\\\ 60  z.B.  würde auch das entsprechende "Typen unverträglich" erzeugen.

Bei der Eingangsabfrage ein Str davor setzen, also:

If Str(Tabelle4.Cells(intZeilenzahl, 6)) <> ""

Bei den weiteren dann

txtTäglichStundenLesen = Val(Tabelle4.Cells(intZeilenzahl, 6)) \\\\ 60

' Val nur wenn kein , vorkommt sondern . als Dezimaltrenner, ansonsten den entsprechenden Typ CDbl oder CInt verwenden.
Antwort bewerten Vielen Dank für Deine Bewertung
agent888 06.03.2016, 10:39

Danke für deine Hilfe! Es funktioniert schon.... Ich habe eine variable vom typ variant mit dem Inhalt der zelle angelegt und diese durch 60 geteilt.... Jetzt geht es...

0

WO tritt der Fehler denn auf?
Die Zeilenzahl in Excel sollte man immer als "long" definieren, nicht als "integer", aber ich denke, das ist hier nicht der Fehler.
Steht denn in der abgefragten Zelle eine echte Zahl? Sonst wirft das Mod 60 den Error 13 aus.
Teste das vlt. mal, indem Du die Funktion REST direkt im Sheet auf die abgefragte Zelle beziehst.

Antwort bewerten Vielen Dank für Deine Bewertung
agent888 06.03.2016, 10:39

Danke für deine Hilfe! Es funktioniert schon.... Ich habe eine variable vom typ variant mit dem Inhalt der zelle angelegt und diese durch 60 geteilt.... Jetzt geht es...

0
Oubyi 06.03.2016, 15:25
@agent888

Das ist imho keine saubere Lösung.
Test auf jeden Fall mal genau, ob es zu keinen Fehlern kommt.

0

Danke für die Antworten! Hat allerdings nicht geholfen.. der Fehler kommt immer noch... Die  Zeile in der ich \\\\ 60 rechne, ist die Fehlerhafte Zeile...

Antwort bewerten Vielen Dank für Deine Bewertung
Oubyi 05.03.2016, 19:53

Kommentiere dann diese Zeile einfach mal aus.
Wenn dann der Fehler in der nächsten Zeile (Mod 60) genau so eintritt, dann steht imho in der Zelle KEINE Zahl.
Füge mal vor der Fehler-Zeile diese ein:

debug.print Tabelle4.Cells(intZeilenzahl, 6).Value \ 60

Was wird im Direktbereich angezeigt?

Hast Du meinen Test durchgeführt?:

Teste das vlt. mal, indem Du die Funktion REST direkt im Sheet auf die abgefragte Zelle beziehst.

P.S.: Wenn Du nicht in einer Antwort, sondern direkt als Kommentar in unseren Antworten reagierst, bekommen wir das wesentlich schnelle/ besser mit. Hierauf bin ich nur durch Zufall gestoßen.

0
agent888 06.03.2016, 10:39

Danke für deine Hilfe! Es funktioniert schon.... Ich habe eine variable vom typ variant mit dem Inhalt der zelle angelegt und diese durch 60 geteilt.... Jetzt geht es...

0

Was genau ist den txtTäglichStundenlesen? Ich kann den Ablauf noch nicht ganz nachvollziehen, es fällt nur auf, dass in der fehlerhaften Zeile kein .value steht.

Antwort bewerten Vielen Dank für Deine Bewertung
agent888 05.03.2016, 19:09

Das ist ein Textfeld auf meiner Userform!

0
Ninombre 05.03.2016, 19:37
@agent888

Was steht denn in der Zelle, die für die Berechnung herangezogen wird? Du hattest zwar geschrieben (sinngemäß) danke für die Hinweise, aber es klappt nicht. Aber was steht nun in der Zelle drin?
Wird über den Wert von intzeilenzahl ggf. ein falsches Feld angesprochen?

1

Was möchtest Du wissen?