Werte zurück in die gleichen Zelle

Hallo Skaletti,

nochmals ganz kurz :wink:
Irgendwo hatte ich hier mal was zur Namensgebung gelesen. Beim programmieren sollte man sich an die ungarische Notation halten. Ok, ist nicht vorgeschrieben, sondern nur ein Rat. Somit hast du in einen 1/2 Jahr immernoch den Durchblick :wink:

Wie die Notation ausschaut, sishst du hier .

http://www.it-academy.cc/article/995/Ungarische+Nota…

MfG Alex

Hallo Alex,
vielen Dank für deine schnelle Antwort.
Sobald ich in eine der beiden Boxen eine Zahl eingeben möchte
kommt der Laufzeitfehler „Objekt erforderlich“.
Hier die „Change Ereignisse“ der beiden Boxen. Ich bin noch ein
„Greenhorn“ was VBA angeht.
Gruß Skaletti!

'Dieser Code auch in das Modul der USerForm?
Private Sub Form\_Load()
btnRechne.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0)
End Sub

Private Sub tbWareneingangEingabe\_Change()
btnRechne.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0)
If IsNumeric(tbWareneingangEingabe) = False Then
 MsgBox "Bitte nur Zahlen eingeben"
 tbWareneingangEingabe.Value = ""
 End If
End Sub

Private Sub tbAusgangEingabe\_Change()
btnRechne.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0)
If IsNumeric(tbAusgangEingabe) = False Then
 MsgBox "Bitte nur Zahlen eingeben"
 tbAusgangEingabe.Value = ""
 End If

Hallo Skaletti,

in kenne dein „Program“ nicht.
Mein geposteter Source ist nur ein Demo.
Du musst diesen Source anpassen!

Private Sub Form\_Load()
btnRechne.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And
Len(tbAusgangEingabe) \> 0)
End Sub

Private Sub tbWareneingangEingabe\_Change()
btnRechne.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And
Len(tbAusgangEingabe) \> 0)
If IsNumeric(tbWareneingangEingabe) = False Then
 MsgBox "Bitte nur Zahlen eingeben"
 tbWareneingangEingabe.Value = ""
 End If
End Sub

Private Sub tbAusgangEingabe\_Change()
btnRechne.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And
Len(tbAusgangEingabe) \> 0)
If IsNumeric(tbAusgangEingabe) = False Then
 MsgBox "Bitte nur Zahlen eingeben"
 tbAusgangEingabe.Value = ""
 End If

Naja das schaut doch schon gut aus :wink:
Also du lädst ja eine Userform oder? Wie nennt sich das Ereignis welches beim Laden der Userform ausgeführt wird? In dieses Ereignis schreibst du dann

btnRechne.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0)

Das Form_Load Ereignis sollte das machen. Ist aber unter VBA scheinbar etwas anders. ODer besser gesagt schimpft sich anders.

Nun musst du das von mir genannte Object btnRechne, was bei dir sicher anders heisst umbenennen! Ein Object vom Typ btnRechne gibt es bei dir nicht.

Sprich wenn sich dein Button bRechne schimpft so musst du alle btnRechne duch bRechne ersetzen!

Danach sollte es laufen :smile:

MfG Alex

Form_Load in Vba

Das Form_Load Ereignis sollte das machen. Ist aber unter VBA
scheinbar etwas anders. ODer besser gesagt schimpft sich
anders.

Hallo Alex,

ja, es nennt sich:

Private Sub UserForm_Initialize()

Gruß
Reinhard

Hallo Alex,
hat etwas länger gedauert, war unterwegs.
Ich zeige dir nochmal den Code wie er jetzt aussieht.
Nach deiner Beschreibung müsste es so funzen. Aber,
Laufzeitfehler im Code wo die TextBoxen Rechnen.
Danke für deine Hilfe
Gruß Skaletti!

Private Sub cmdRechnen\_Click()
Call TextBoxen\_rechnen
cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0)
End Sub

Private Sub tbWareneingangEingabe\_Change()
cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0)
If IsNumeric(tbWareneingangEingabe) = False Then
 MsgBox "Bitte nur Zahlen eingeben"
 tbWareneingangEingabe.Value = ""
 End If
End Sub

Private Sub tbAusgangEingabe\_Change()
cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0)
If IsNumeric(tbAusgangEingabe) = False Then
 MsgBox "Bitte nur Zahlen eingeben"
 tbAusgangEingabe.Value = ""
 End If
End Sub

'hier der Code wo gerechnet wird
Private Sub TextBoxen\_rechnen()
If IsNumeric(tbWareneingangAktuell.Text) Then
 tbWareneingangSumme.Text = CDbl(tbWareneingangEingabe.Text) + CDbl(tbWareneingangAktuell.Text)'diese Zeile gelb 'Laufzeifehler 'Typen unverträglich
 End If
If IsNumeric(tbAusgangAktuell.Text) Then
 tbAusgangSumme.Text = CDbl(tbAusgangEingabe.Text) + CDbl(tbAusgangAktuell.Text)
 End If
If IsNumeric(tbZurückAktuell.Text) Then
 tbZurückSumme.Text = CDbl(tbZurückAktuell.Text)
 End If
If IsNumeric(tbWareneingangSumme.Text) Then
 tbLagerSumme.Text = CDbl(tbWareneingangSumme.Text) - CDbl(tbAusgangSumme.Text) + CDbl(tbZurückSumme.Text)
 End If

End Sub

hallo Skaletti,

Laufzeitfehler im Code wo die TextBoxen Rechnen.

gib bitte genauer die Fehlermeldung an und auch die Codezeile wo er auftritt.

Laufzeitfehler könnte 1004 sein, der besagt m.E. aber nur daß Vba etwas machen soll was es grad nicht kann. Gibst viele Ursachen.

Benutze Debug.Print oder MsgBox an/vor den kritischen Stellen und schaue bzw. teile uns mit was in dem Moment wo der Fehler entsteht in den Textboxen drinsteht.

Gruß
Reinhard

Hallo Reinhard,

mmmm, es funktioniert jetzt
Datei gespeichert, geschlossen und wieder geöffnet.
Warum kann ich im Moment nicht sagen. Vielleicht tritt der Fehler
mal wieder auf, dann melde ich mich mit den von dir gewollten Infos.

In welcher Codezeile hatte ich aber angegeben.
(Kommentar hinter der Zeile)
Mach ich nächste mal deutlicher.
Sonst erstmal vielen Dank an Dich, Alex und Carsten.
Sehr gute Hilfe. Gutes Forum.

Gruß Skaletti!

Hallo Skaletti,

mmmm, es funktioniert jetzt
Datei gespeichert, geschlossen und wieder geöffnet.
Warum kann ich im Moment nicht sagen. Vielleicht tritt der
Fehler
mal wieder auf, dann melde ich mich mit den von dir gewollten
Infos.

das ist zwar kein Beweis aber ein Indiz daß es daran liegen könnte daß im Fehlerfall etwas Falsches in der TextBox steht.

In welcher Codezeile hatte ich aber angegeben.
(Kommentar hinter der Zeile)

Ja, hast du, aber ich habe nicht ellenlang nach rechts gescrollt :smile:

Sonst erstmal vielen Dank an Dich, Alex und Carsten.

Danke

Gruß
Reinhard

Hallo Reinhard,
Mist, wie zu erwarten ist der Laufzeitfehler wieder da.
Laufzeitfehler ‚13‘ Typen unverträglich.

'Diese Zeile in der Prozedur TextBoxen_Rechnen Gelb
tbWareneingangSumme.Text = CDbl(tbWareneingangEingabe.Text) + CDbl(tbWareneingangAktuell.Text)

Gruß Skalett!

Private Sub cmdRechnen\_Click()
Call TextBoxen\_rechnen
cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0 And Len(tbZurückAktuell) \> 0)
cmdÜbertragen.Locked = False
End Sub

Private Sub tbWareneingangEingabe\_Change()
cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0 And Len(tbZurückAktuell) \> 0)

If IsNumeric(tbWareneingangEingabe) = False Then
 MsgBox "Bitte nur Zahlen eingeben"
 tbWareneingangEingabe.Value = ""
 End If
End Sub

Private Sub tbAusgangEingabe\_Change()
cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0 And Len(tbZurückAktuell) \> 0)

If IsNumeric(tbAusgangEingabe) = False Then
 MsgBox "Bitte nur Zahlen eingeben"
 tbAusgangEingabe.Value = ""
 End If
End Sub

Private Sub TextBoxen\_rechnen()
If IsNumeric(tbWareneingangAktuell.Text) Then
 tbWareneingangSumme.Text = CDbl(tbWareneingangEingabe.Text) + CDbl(tbWareneingangAktuell.Text)
 End If
If IsNumeric(tbAusgangAktuell.Text) Then
 tbAusgangSumme.Text = CDbl(tbAusgangAktuell.Text) + CDbl(tbAusgangEingabe.Text)
 End If
If IsNumeric(tbZurückAktuell.Text) Then
 tbZurückSumme.Text = CDbl(tbZurückAktuell.Text)
 End If
If IsNumeric(tbWareneingangSumme.Text) Then
 tbLagerSumme.Text = CDbl(tbWareneingangSumme.Text) - CDbl(tbAusgangSumme.Text) + CDbl(tbZurückSumme.Text)
 End If

End Sub

Hallo Skaletti,

nun kommt die Frage wo wir noch die Antwort wissen müssten. Was stand zur Zeit als der Fehler auftrat in den Textboxen Wareneingang sowie Warenausgang?

Meine Vermutung ist das dort ungültige Werte standen! Warum prüfst du eigentlich nicht die Eingaben, gleich in dem Moment wo eine Taste gedrueckt wird?(Keypress Ereignis abfangen und mittels Select Case dir Taste prüfen)
Dort kannst du zum Bsp. nur Zahlen, Enter und Backspace, sowie das Komma oder den Punkt zulassen. Somit bist du immer auf der sicheren Seite das richtige Werte angegeben sind :smile:

MfG Alex

Hallo Alex,
du Nachtschwärmer.

nun kommt die Frage wo wir noch die Antwort wissen müssten.
Was stand zur Zeit als der Fehler auftrat in den Textboxen
Wareneingang sowie Warenausgang?

Wenn die Form aufgerufen wird werden aus 4 bestimmten Zellen
der aktiven Zeile 4 Textboxen gefüllt. Nur Standartzahlen ohne
Komma und Punkt. Die TextBoxen lassen auch nur die Eingabe von
Zahlen ohne K+P zu.
In diesem Moment muss der 1. Button gesperrt sein. ist er es nicht
gibt es den Laufzeitfehler. Wenn ich ihn betätigen würde und in den
3 Eingabeboxen steht keine Zahl sowieso. Eine Zeitlang war der
Button gesperrt, dann kein Laufzeitfehler.
Wenn der Button nicht gesperrt ist, und ich will die erste Zahl
in eine Eingabebox eingeben, Laufzeitfehler.
Ich habe die Befehle zum Sperren des Button mal herauskommentiert,
dann kein Laufzeitfehler, es sei den ich betätige den Butto bevor
in jeder Eingabebox eine Zahl steht, das ist ja normal.

Meine Vermutung ist das dort ungültige Werte standen! Warum
prüfst du eigentlich nicht die Eingaben, gleich in dem Moment
wo eine Taste gedrueckt wird?(Keypress Ereignis abfangen und
mittels Select Case dir Taste prüfen)

Das ist Neuland für mich.

Dort kannst du zum Bsp. nur Zahlen, Enter und Backspace,
sowie das Komma oder den Punkt zulassen. Somit bist du immer
auf der sicheren Seite das richtige Werte angegeben sind :smile:

Ich bin fest davon überzeugt das ich nur Zahlen eingeben wollt,
sonst MsgBox „Bitte eine Zahl eingeben“
Ich hoffe das iat einigermaßen Verständlich.
Vielen Dank für deine Hilfe.
Gruß Skaletti!

Hi Alex,
noch ein Nachtrag,
im Moment gehts wieder, aber der Button sperrt erst wenn ich die

  1. Zahl eingebe, ist nicht gesperrt beim Aufruf der UserForm.

Gruß Skaletti!

Hallo Skaletti,

ich habe mir den Source nun noch einmal angeschaut.
Du hast stehen

cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0 And Len(tbZurückAktuell)

Dort fehlt >0)!

es muss lauten

cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 And Len(tbAusgangEingabe) \> 0 And Len(tbZurückAktuell)\>0)

Aber hast du genau diese Zeile auch ins Private Sub UserForm_Initialize() geschrieben? Ich hatte diese als Form_Load declariert. Aber in VBA nennt die sich ja anders :wink: Die Zeile in der UserForm_Initialize sorgt dafür das der Button ggfls. beim laden der Form gesperrt wird :wink:

MfG Alex

Bug bei Pre-Tag
Hi Alex,

Dort fehlt >0)!

es muss lauten

cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) \> 0 \_
And Len(tbAusgangEingabe) \> 0 And Len(tbZurückAktuell)\>0)

ob das beim Original auch so war weiß ich nicht, Dein Code wurde durch einen Bug in w-w-w verstümmelt. :frowning:

Gruß Rainer

ob das beim Original auch so war weiß ich nicht, Dein Code
wurde durch einen Bug in w-w-w verstümmelt. :frowning:

hallo Rainer,

ich tipp da eher auf Alexbug :smile:)

Sofern du mit Original das meinst:

/t/werte-zurueck-in-die-gleichen-zelle/5497290/17

Da ist >0 schon dabei, außerhalb des Sichtbereiches.
Aber wenn man komplett die zeile kopiert hat man das mitdrin.

Mit der Scrollbalkenlösung von w-w-w wäre ich zufrieden wenn mein Bildschirm 3mal so breit wäre, denn dann bräuchte ich die nicht.

Ansonsten ist rauskopieren und in den Editor einfügen immer so eine Sache.

Liegt wohl an den Webseitenprogrammierern.

Zum Glück nur gelegentlich kopiert man einen schön lesbaren Code in den Editor, klassisch mit Str-c, Strg-v.
Anschließend hat der Editor alles in ein oder zwei Zeilen geschrieben.

Und man hat seinen Spass daran das wieder zu zerlegen. Natürlich funkt da laufend der Debugger dazwischen um den Spaßfaktor zu erhöhen *grummel*
Leerzeichenformatierung ist logo auch verschollen:frowning:

Das andere sind am Zeilenende die Unterstriche die öfters nicht korrekt vom Debugger erkannt werden obwohl sie im Code da stehen wo sie hingehören.
Liegt vielleicht am nötigen Leerzeichen danach o.ä. K.A.
Manchmal muß man/ich dann quasi das was da steht neu eingeben dann klappts.

Gruß
Reinhard

Hallo Reinhard,

ich tipp da eher auf Alexbug :smile:)

Sofern du mit Original das meinst:

/t/werte-zurueck-in-die-gleichen-zelle/5497290/17

Da ist >0 schon dabei, außerhalb des Sichtbereiches.
Aber wenn man komplett die zeile kopiert hat man das mitdrin.

Mit der Scrollbalkenlösung von w-w-w wäre ich zufrieden wenn
mein Bildschirm 3mal so breit wäre, denn dann bräuchte ich die
nicht.

bei dem Einzeiler von Alex fehlt bei mir der Scrollbalken. Der Text wird abgeschnitten und es sieht so aus, als hätte Alex nicht ‚>0‘ geschrieben. Der Fehler ist bekannt, wartet auf die Korrektur.

‚Copy and paste‘ habe ich noch nicht versucht, ich sehe den vollständigen Text aber beim Antworten.

Gruß Rainer

Hallo Alex,

ich habe mir den Source nun noch einmal angeschaut.
Du hast stehen

cmdRechnen.Enabled = CBool(Len(tbWareneingangEingabe) > 0 And
Len(tbAusgangEingabe) > 0 And Len(tbZurückAktuell)

Dort fehlt >0)!

Die >0) hat nicht gefehlt, warscheinlich beim kopieren nicht mitgekommen.

Aber hast du genau diese Zeile auch ins Private Sub
UserForm_Initialize() geschrieben? Ich hatte diese als
Form_Load declariert. Aber in VBA nennt die sich ja anders :wink:
Die Zeile in der UserForm_Initialize sorgt dafür das der
Button ggfls. beim laden der Form gesperrt wird :wink:

Nicht schimpfen, aber der Code stand an der falschen Stelle.
Hatte in beim RechnenButton reingeschrieben. Bin manchmal ein
kleiner Tölpel.Es funzt jetzt.
Danke für deine ausdauernde Hilfe.

Gruß Skaletti!

Hallo ihr beiden,

was mir aufgefallen ist. An Textanfang gehen. Die linke Maustaste druecken und dann ueber den Text nach rechts ziehen bis es net mehr geht. Da kommen dann die fehlenden Zeichen :wink:

Aber wo ich das mitbekommen habe war der Artikel schon gepostet und klein Alex zu faul ihn zu aendern *gg*

MfG Alex

Hallo Skaletti,

keine Bange.Eh ich schimpfe dauert Ewigkeiten *gg*
Aber das solche Fehler passieren, ist normal. Geht mir auch öfters so. Aktuell in meinem derzeitigen Project werden ca. 9000 Eintraege eingelesen, Informationen ausgelesen und dann in eine DB geschrieben. Bei den letzten 3 Eintraegen machte das Proggi Probleme. Warum ? Eine kleine schwule blöde Klammer hat gefehlt *gg*

Naja wie gut das ein Test ca. 8 Minuten gedauert hat und ich nach 2 Tagen!!! auf die Lösung kam *gg*

MfG Alex

Hallo Alex,

was mir aufgefallen ist. An Textanfang gehen. Die linke
Maustaste druecken und dann ueber den Text nach rechts ziehen
bis es net mehr geht. Da kommen dann die fehlenden Zeichen :wink:

ist mir zu mühsam bei langen Zeilen, vorne hinstellen, dann Shift+Ende, dann Strg+c.

Aber wo ich das mitbekommen habe war der Artikel schon
gepostet und klein Alex zu faul ihn zu aendern *gg*

*gg* Allzu verständlich.

Ich habe FAQ:2363 geschrieben, und ich benutze es immer wenn ich Tabellenauszüge poste, einzig noch ein anderer auch. da sind nun zwei Fehler drinnen, die sich auf Prozeduren beziehen die es da gar nicht gibt weil die in einem andren Modul standen.

Ein Klacks da die Aufrufe rauszuwerfen. Aber, in den Jahren wo es da steht kamen ganze vier Nachfragen.
Also für mich kein Handlungsbedarf da was zu ändern.

Frag mich nicht warum in der FAQ die Formatierungen durch Leerzeichen nicht da sind. letztlich egal, liest ja eh keiner.

Gruß an Klein Alex :smile:
Reinhard