Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

In VBA wenn die eingabe keine Zahl ist soll er EingabeBox erneutbringen

Frage Entwicklung

Mitglied: eldiablo9100

eldiablo9100 (Level 1) - Jetzt verbinden

04.11.2009 um 14:38 Uhr, 9237 Aufrufe, 17 Kommentare

Hallo Liebe Leute

Ich habe folgendes Probelm : Ich muss mit hilfe von VBA Volumen berechnen können.

Dies klappt. Nun soll ich es so machen, dass wenn ich keine Zahl eingebe das das Fenster erneut kommt.

Kenne den befehl nicht.

Hier ist mein Quellcode:

01.
Private Sub cmdStart_Click() 
02.
Call volumen 
03.
End Sub 
04.
 
05.
Public Sub volumen() 
06.
Dim h, l, b  As Integer 
07.
Dim a, z, r As Variant 
08.
Dim ausgabe As Variant 
09.
 
10.
l = InputBox("Länge : ") 
11.
    If l < 0 Then 
12.
        Exit Sub 
13.
    End If 
14.
 
15.
 
16.
h = InputBox("Höhe: ") 
17.
    If h < 0 Then 
18.
        Exit Sub 
19.
    End If 
20.
 
21.
b = InputBox("Breite: ") 
22.
    If b < 0 Then 
23.
        Exit Sub 
24.
    End If 
25.
 
26.
 
27.
a = l * h * b 
28.
 
29.
ausgabe = MsgBox("Das Volume Beträgt: " & a, vbOKCancel) 
30.
If ausgabe = vbOK Then 
31.
    Call volumen 
32.
     
33.
ElseIf ausgabe = vbCancel Then 
34.
    Exit Sub 
35.
End If 
36.
     
37.
End Sub
Mitglied: bastla
04.11.2009 um 15:06 Uhr
Hallo eldiablo9100!

Schau Dir die Funktion "IsNumeric()" (und "Do Until") an ...

Grüße
bastla
Bitte warten ..
Mitglied: eldiablo9100
04.11.2009 um 15:10 Uhr
Verstehe ich noch nicht ... bin anfänger bitte gib mir ein Beispiel

Danke
Bitte warten ..
Mitglied: bastla
04.11.2009 um 15:18 Uhr
Hallo eldiablo9100!
bin anfänger
Wenn Du so schnell aufgibst, wirst Du das vermutlich noch länger bleiben ...

Gemeint war etwa:
01.
Do 
02.
    l = InputBox("Länge : ") 
03.
Loop Until IsNumeric(l)
Grüße
bastla

[Edit] Jetzt sogar mit Loop ... [/Edit]
Bitte warten ..
Mitglied: 76109
04.11.2009 um 15:54 Uhr
Hallo eldiablo9100, Hallo bastla!

Wäre noch zu überlegen, ob bei Zahleneingaben nicht besser die App.InputBox mit Typ-Angabe verwendet wird.

z.B. InputBox mit Typ Zahl:
01.
Dim b As Double 
02.
 
03.
b = Application.InputBox(prompt:="Länge: ", Title:="Flächenberechnung", Type:=1)
Gruß Dieter
Bitte warten ..
Mitglied: bastla
04.11.2009 um 16:57 Uhr
@76109
Wenn wir Excel (und nicht zB Access) voraussetzen wollen, auf jeden Fall die elegantere Version ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
04.11.2009 um 17:11 Uhr
Zitat von bastla:
Wenn wir Excel (und nicht zB Access) voraussetzen wollen, auf jeden Fall die elegantere Version ...
Tja, wir wissen es nicht und eldiablo9100 hat wohl schon Feierabend gemacht

Und das fehlende Loop hast Du ja auch schon hinzugefügt! Habe extra nix gesagt

Gruß Dieter
Bitte warten ..
Mitglied: bastla
04.11.2009 um 17:21 Uhr
@76109
Habe extra nix gesagt
Danke, ganz lieb (Manchmal komme ich sogar dazu, zu lesen, was ich vorher geschrieben hab' ...)

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
05.11.2009 um 03:39 Uhr
@all,

einen kleinen Nachteil hat das "IsNumeric" schon, gell?
Sonderzeichen.
Nur mal zum üben in VBS:
01.
Do 
02.
    l = InputBox("Länge : ") 
03.
Loop Until IsNumeric(l) 
04.
 
05.
msgbox l 
06.
 
07.
For iKN = 1 To Len(l) 
08.
        l1 = Mid(l, iKN, 1) 
09.
            If IsNumeric(l1) = False Then 
10.
                KeineNummer = 0 
11.
            End If 
12.
	    If IsNumeric(l1) = True Then 
13.
                l2 = l2 & l1 
14.
            End If 
15.
Next 
16.
 
17.
msgbox l2
Gruß
Tsuki
Bitte warten ..
Mitglied: bastla
05.11.2009 um 14:05 Uhr
Hallo Tsuki!

Eigentlich reduziert sich das Sonderzeichenproblem auf die Verwendung des Punktes (wenn jemand partout eine Eingabe als Oktal- , zB &24, oder Hex-Wert , etwa &H14, vornehmen möchte, wäre das Ergebnis ja immer noch eine Zahl).

Per "Replace()" lässt sich die Sache mit dem Punkt allerdings recht einfach erledigen:
l = Replace(InputBox("Länge : "), ".", ",")
Grüße
bastla

P.S.: In Deiner "Übungsschleife" bleiben leider Dezimalzahlen auf der Stecke ...
Bitte warten ..
Mitglied: TsukiSan
05.11.2009 um 14:59 Uhr
Hallo bastla,

hatte "." "," "+" und "-" bei mir damit auch wechbekommen. Wieso denn das?
(WinXp Pro Sp2 Enu)

Danke und Gruss
Tsuki
Bitte warten ..
Mitglied: TsukiSan
05.11.2009 um 15:02 Uhr
Hab's eben noch mal auf'm anderen Rechner probiert mit meiner Schleife
Bei l2 sind's dann nur noch Ziffern. Es gibt keine Dezimalzahlen o. ae. mehr!?
Mit Replace bekommt man's natuerlich auch "sauber"!!!

bastla, hilfe!

Gruss
Tsuki
Bitte warten ..
Mitglied: 76109
05.11.2009 um 15:26 Uhr
Hallo TsukiSan!

Zitat von TsukiSan:
Bei l2 sind's dann nur noch Ziffern. Es gibt keine Dezimalzahlen o. ae. mehr!?
Is ja logisch, wenn IsNumeric anstelle einer Zahl mit diversen Zeichen, nur einen Punkt oder Komma zum Prüfen bekommt.

Ansonsten werden Zahleneingaben im deutschen oder englischen Format von IsNumeric als Zahlen korrekt erkannt. Eine entsprechende Konvertierung ist wieder eine andere Sache.

Gruß Dieter
Bitte warten ..
Mitglied: TsukiSan
05.11.2009 um 15:52 Uhr
Hallo Dieter,

so funktioniert es ja auch auf meinen Rechnern. Nur bastla hatte erwähnt, dass
der PUNKT noch übrig bliebe in meiner Versuchsschleife. Das ist aber bei mir nicht der
Fall. Es gäbe nur noch "Integers", wenn man das so nennen darf. Deswegen, was
passiert bei bastlas Rechner mit meiner Schleife anders???

Danke und Gruss
Tsuki
Bitte warten ..
Mitglied: bastla
05.11.2009 um 16:47 Uhr
@Tsuki
Nur bastla hatte erwähnt, dass der PUNKT noch übrig bliebe in meiner Versuchsschleife.
Hatte ich (hoffentlich) nicht - was ich gemeint hatte: Eine Eingabe mit einem Punkt wird als "Numeric" erkannt, aber bei der Konvertierung in zB einen Dbl-Wert wird der Punkt einfach weggelassen - daher würde aus 1.5 dann 15. Aus diesem Grund ist der Punkt das einzige Sonderzeichen, das im Zusammenhang mit "IsNumeric()" Probleme macht (Du hattest ja, relativ sparsam formuliert , vor "Sonderzeichen" gewarnt).

Deine Schleife lässt tatsächlich nur Ziffern durch - damit ist aber dann auch nur die Eingabe von "Integers" und eben nicht von Dezimalzahlen möglich.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
05.11.2009 um 17:13 Uhr
...es geht mich ja nichts an, aber...
....die Wahrscheinlichkeit, dass eldiabolo9100 bei seinem Übungsprogramm zur Berechnung des Volumens eines Schuhkartona irgendeinen anderen numerischen Datentyp als unsigned smallint verwenden muss, ist eher gering.

Soweit ich das als Laie beurteilen kann, wird der oben im Eröffnungsbeitrag gepostete Schnipsel eher nicht so weit aufgebohrt, dass sich damit Satelliten steuern oder die Kursverläufe der New Yorker Börse visualisieren lassen.

Geht doch einfach von Ganzzahlen aus - dann lässt sich Prüfung doch auf die überschaubaren 10 Ziffern reduzieren und sogar, falls die Funktion IsNumeric() gerade Urlaub hat, mit einer (Buchstaben-) Prüfung auf [Zeichen ist >="0" und Zeichen ist <="9" ] abfackeln.

Abgesehen davon wäre ich -ungeachtet der kurzweiligen Diskussion in diesem Thread- eigentlich ganz dankbar für ein Lebenszeichen des TOs....

Grüße
Biber
Bitte warten ..
Mitglied: TsukiSan
06.11.2009 um 07:32 Uhr
@bastla,

ich hatte es wohl dann falsch verstanden. Sorry!
die "Punkt- und Strichzeichen" - mal maedchenhaft formuliert -
laesst IsNumeric durch. Ist ja auch logisch!
Das hatte ich tatsaechlich sparsam formuliert.

Naja, wichtig ist, ich hab's begrffen

Nun pflichte ich biber bei und warte auf ein Feedback des TOs.

Gruss,
Tsuki
Bitte warten ..
Mitglied: bastla
06.11.2009 um 08:13 Uhr
@Tsuki
Nun pflichte ich biber bei und warte auf ein Feedback des TOs.
Tun wir das (beides ) nicht alle?

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel VBA Zahl von Text trennen
gelöst Frage von abuelitoMicrosoft Office28 Kommentare

Hallo an Alle, ich habe folgendes Problem: In der Spalte A habe ich in den Zellen folgende Werte stehen: ...

Microsoft Office
Excel VBA In Userform Maske Text nach Eingabe löschen
gelöst Frage von kluthi69Microsoft Office1 Kommentar

Hallo, suche die Möglichkeit nach Eingabe aus der Maske die Textboxen zu löschen um gleich weiter neue Eingaben zu ...

Ubuntu
CMD Eingabe
gelöst Frage von scheibenboxxxerUbuntu3 Kommentare

Hi leute Ma ne frage an euch was bringt das wenn mann den cmd unter linux aufruft und eintippt ...

Microsoft
Eingabe in cmd ?
Frage von PeterMoMicrosoft5 Kommentare

Ich habe auf dem Desktop seit gestern dieses stehen: Testmodus Windows 7 Build 7601 Da ich mich in der ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 15 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 19 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...