MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 10.06.2019, 19:33   #1
Kein Erklärbär Pit
Neuer Benutzer
Neuer Benutzer
Standard VBA - UserForm -> Button soll ""klick ignorieren

Lange Rede, kurzer Sinn … Es hat mich jetzt schon Stunden gekostet und es ist der letzte Fehler der die Fertigstellung verhindert!
Ich habe eine UserForm3, in der ein Command-Button, 2 Textfelder und ein Zahlenfeld 0 bis 9 (wie Taschenrechner) enthalten sind.
Meine Zahl oder den Wert, die ich über das Zahlenpad der UserForm3 eintippe, darf nicht größer als 0 bis 180 sein und erscheint dann im Textfeld "TBscore" … diese Wird dann in eine Tabelle übertragen und das Gesamtergebnis wird mir im 2. Textfeld angezeigt. Das klappt auch alles wunderbar …
Nun das Problem, was mich zur Verzweiflung bringt …
Wenn "TBscore" leer ist, ich also keine Zahl über das Zahlenpad eintippe, und ich klicke dann auf OK (Command-Button), dann bricht das Programm ab, weil ich eine Variable namens "Zahl_1" habe, die eben die Übertragung des Wertes per Formel/Code in die Datentabelle überträgt.
Ein leeres "TBscore" Feld ist aber kein Wert bzw. Zahl und deswegen bricht es ja auch ab.
Ich habe alles, was ich bisher weiß, probiert. Kann jemand helfen?
Kein Erklärbär Pit ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 19:42   #2
Storax
MOF Koryphäe
MOF Koryphäe
Standard

Vielleicht so
Code:

If Len(Zahl_1) = 0 then
    exit sub
end if
Ansonsten den User Input validieren

__________________

How do I ask a good question?

In a lot questions the OP has no idea what they're doing, they've found code on the internet, mixed it around and got something. They don't understand why that something doesn't work.
Usually, in these questions, the original poster is rather clueless, helping them on the question is only spoon feeding them, and there is little to no chance the question will help anyone in the future.

Press any key to continue - or any other key to abort.

Spoon feeding: provide (someone) with so much help or information that they do not need to think for themselves.

Geändert von Storax (10.06.2019 um 19:44 Uhr).
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 19:50   #3
Kein Erklärbär Pit
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Das steht bisher da …..

Sub GetScore_Click()

Dim Zahl_1 As Byte 'Zahl ohne Komma aus TBScore 1 bis 255

If Len(Zahl_1) = 0 Then ' <-- von Dir eben eingefügt
Exit Sub
End If

Zahl_1 = TBscore.Value
TBscore.Value = ""

TBscore.Value = "" habe ich stehen, damit das Textfeld "TBscore" für die nächste Eingabe leer ist …
Dein Vorschlag hat nicht funktioniert …
Zahl_1 = TBscore.Value wird gelb hinterlegt im Fehler "Laufzeitfehler 13, Typen unverträglich ...
Kein Erklärbär Pit ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 19:56   #4
Storax
MOF Koryphäe
MOF Koryphäe
Standard

Bei mir hat es funktioniert, den von Dir geposteten Code kannte ich bis dahin nicht.

Ich empfehle meinem Link zu folgen und vorher alle Artikel hier (die frei
zugänglichen reichen) durcharbeiten.

Danach kannst Du gerne nochmal Fragen stellen.

__________________

How do I ask a good question?

In a lot questions the OP has no idea what they're doing, they've found code on the internet, mixed it around and got something. They don't understand why that something doesn't work.
Usually, in these questions, the original poster is rather clueless, helping them on the question is only spoon feeding them, and there is little to no chance the question will help anyone in the future.

Press any key to continue - or any other key to abort.

Spoon feeding: provide (someone) with so much help or information that they do not need to think for themselves.
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 20:17   #5
Kein Erklärbär Pit
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich bestreite ja nicht, dass es funktioniert …
Aber irgendwie bekomme ich es nicht hin und glaub mir, ich habe schon Stunden mit Lesen verbracht … sonst wäre ich ja mit dem Projekt nicht so weit, wie ich bin! Es ist der eine letzte Fehler eben …
Also nochmal zur Erklärung:
Es gibt ein Textfeld, der einen festen Wert hat, z.B. 50
Über die Nummerntastatur gebe ich einen neuen Wert, z.B. 20 ein, welcher im Textfeld "TBscore" auch angezeigt wird (und an die Variable Zahl_1) übergeben wird). Mit Klick auf "OK" (Command-Button) berechnet meine Formel dann 50 - 20, gibt den Wert in die Worksheettabelle "Daten" … Das 3. Textfeld holt sich das Ergebnis aus der Datentabelle und zeigt es an, nämlich 30. Das funktioniert alles einwandfrei.
Sobald ich aber auf den Command-Button klicke, ohne vorher eine Zahl über die Tastatur eingegeben zu haben, bricht das Programm ab weil eben die Variable "Zahl_1" kein Leerwert verarbeitet.
Es muss doch möglich sein, mit einem kleinen Codeschnipsel das hinzubekommen, das dieser "Leerklick" ignoriert wird …
Kein Erklärbär Pit ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 20:25   #6
Storax
MOF Koryphäe
MOF Koryphäe
Standard

Ja, ist es.
Code:

If Len(... andere Variable ...) = 0 then
    exit sub
end if
Da Du meinen Empfehlungen nicht folgst, bin ich raus.

PS Meine Signatur bringt es auf den Punkt

__________________

How do I ask a good question?

In a lot questions the OP has no idea what they're doing, they've found code on the internet, mixed it around and got something. They don't understand why that something doesn't work.
Usually, in these questions, the original poster is rather clueless, helping them on the question is only spoon feeding them, and there is little to no chance the question will help anyone in the future.

Press any key to continue - or any other key to abort.

Spoon feeding: provide (someone) with so much help or information that they do not need to think for themselves.
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 20:34   #7
Kein Erklärbär Pit
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Besser ist das, aber trotzdem vielen Dank … Weißt Du, manchmal hilft Lesen auch nicht weiter, weil die besten Mechaniker in der Praxis gelernt haben … Du kannst einen Motor nicht nur durch lesen auseinander bauen und wieder zusammen … dann kommt eben dieser letzte eine Fehler ….Gelesen hab ich schon echt viel in der letzten Woche aber um gelesenes zu verstehen, benötigt man meist hilfreiche Praxis … heißt, einen Code haben, sich damit Stück für Stück auseinandersetzten und kapieren .. Schönen Abend noch …
Kein Erklärbär Pit ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 20:57   #8
Flotter Feger
MOF Profi
MOF Profi
Standard

Hallo,

dein Vergleich hinkt ein wenig ... wenn du vor einem neuen Motor stehst, und der stottert, wirst du zwar aus deiner Erfahrung auf die Einspritzpumpe tippen, aber du wirst doch wohl hoffentlich zuerst die Konstruktionspläne und Montageanleitungen des Herstellers lesen, bevor du anfängst, die Pumpe auseinanderzunehmen ... hoffe ich zumindest.

Schau dir bitte mal die Stückliste der Konstruktionszeichnung dieser Zeile an:

Zahl_1 = TBscore.Value ... Zahl_1 ~ As Byte ... TBScore.Value ~ As String

TBScore.Value ~ As String steht da natürlich nur implizit - also nicht wirklich deutlich - Das Control heißt aber TEXTbox ...

Versuche doch mal ...

Zahl_1 = CByte(TBscore.Value)

__________________

VG Sabina

Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
War der Post für dich hilfreich, darf er von dir auch gerne positiv bewertet werden.
bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Flotter Feger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 21:16   #9
Storax
MOF Koryphäe
MOF Koryphäe
Standard

@FlotterFeger: Funktioniert nicht

__________________

How do I ask a good question?

In a lot questions the OP has no idea what they're doing, they've found code on the internet, mixed it around and got something. They don't understand why that something doesn't work.
Usually, in these questions, the original poster is rather clueless, helping them on the question is only spoon feeding them, and there is little to no chance the question will help anyone in the future.

Press any key to continue - or any other key to abort.

Spoon feeding: provide (someone) with so much help or information that they do not need to think for themselves.
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 21:17   #10
Kein Erklärbär Pit
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hi,
ich weiß nicht, ob mein Vergleich soooo hinkt, es kommt halt drauf an … Ausbauen kann ich die Pumpe ja und auseinandernehmen auch, nur bei der Fehlerdiagnostik würde ich meine Gesellen um Rat fragen, wenn ich nicht drauf komme, da ja der Chef Zeitvorgaben hat und nicht 8 Monate auf das reparierte Auto warten möchte wegen einer kleinen Pumpe :-) In der Berufsschule lernst Du eben nur Basisgrundlagen beim lesen ...
Aber schön, dass Du mir etwas Praxis mit auf den Weg gibst :-)
Ich werde es auseinandernehmen und probieren bis es klappt, das erfordert schon mein Ehrgeiz an der Sache :-) Wie gesagt, es ist nur noch der eine Fehler … Wenn ich nur auf den OK-Button klicke, wenn eine Zahl im Textfeld Score drin steht, läuft alles perfekt …
So und jetzt widme ich mich Deinen Code und auch dem Deines Vorgängers nochmal :-)
Ich melde mich dann, wenn es geklappt hat und sage erstmal Danke und Cu
Kein Erklärbär Pit ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2019, 22:58   #11
Kein Erklärbär Pit
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Und für alle, die sowas mal brauchen …

Sub GetScore_Click()

Dim Zahl_1 As Byte 'Zahl ohne Komma aus TBScore 1 bis 255

If CStr(TBscore.Value) = "" Then
Exit Sub
Zahl_1 = TBscore.Value
End If

Zahl_1 = UserForm3.TBscore.Value
TBscore.Value = ""
' weiterer Code bla bla bla …
End Sub
'und Thema erledigt … Wer braucht schon Lesen wenn man Köpchen hat … Auch wenn es mal wieder etwas länger dauert :-)
Guts Nächtle @ all
Kein Erklärbär Pit ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.06.2019, 16:23   #12
derHoepp
MOF User
MOF User
Standard

Moin,

ich würde noch auf Exit Sub verzichten (das heißt im Motoren-Beispiel soviel wie "geh nach hause"). Besser ist es, sich offen zu halten, noch was anderes zu tun (zum Beispiel: Pumpe erst wieder einbauen, Schrauben zählen, Motor ausprobieren). In VBA gesprochen: Statt Exit Sub ist meist ein leerer Else-Zweig zu bevorzugen.

Viele Grüße
derHöpp
derHoepp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.06.2019, 16:41   #13
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

geradeaus geht anders: Prüfen, ob die Eingabe leer ist und dann
Code:

Commandbutton1.locked = true

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.06.2019, 17:01   #14
Kein Erklärbär Pit
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von derHoepp Beitrag anzeigen

Moin,

ich würde noch auf Exit Sub verzichten (das heißt im Motoren-Beispiel soviel wie "geh nach hause"). Besser ist es, sich offen zu halten, noch was anderes zu tun (zum Beispiel: Pumpe erst wieder einbauen, Schrauben zählen, Motor ausprobieren). In VBA gesprochen: Statt Exit Sub ist meist ein leerer Else-Zweig zu bevorzugen.

Viele Grüße
derHöpp

Guter Vorschlag aber dann läuft der Motor nicht .. Also mit Else kommt es zum Programmabbruch … Heißt, Motor springt an und geht wieder aus … Nach Exit Sub geht das Programm ja weiter, auch wenn ich auf den "GetScore" Button klicke. Steht da dann nix drin, tut sich auch nix :-) Erst wenn ich wieder Zahlen eintippe und auf den Button klicke, rechnet er weiter und genau so wollte ich es und so ist es nun auch … Nach Exit Sub ist ja nicht das Programm beendet, sondern nur die Eingabe ohne einen Wert wird für den Moment beendet. Gibst Du dann eine Zahl ein, läuft es weiter … es ist also offen gehalten :-)
Kein Erklärbär Pit ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.06.2019, 17:04   #15
Kein Erklärbär Pit
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von drambeldier Beitrag anzeigen

Moin,

geradeaus geht anders: Prüfen, ob die Eingabe leer ist und dann

Code:

Commandbutton1.locked = true

Das hatte ich schon weit vorher versucht und hat auch nicht geklappt. Was glaubst Du, warum ich hier im Forum um Rat gefragt habe? Vielleicht sieht meine Lösung für euch Profis etwas stümperhaft aus aber sie funktioniert und hat in sämtlichen Test' s nicht einmal versagt … Ist es nicht das, worauf es ankommt, auch wenn es nicht ganz den angelesenen "Syle" entspricht?
Kein Erklärbär Pit ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.