Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1040to1044
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inpubox

Inpubox
23.01.2009 11:32:36
Tom
Hallo zusammen,
ich besitze ein Formular welches meherere Abfragen via Inputboxen durchläuft.
Nun gibt es in dem Formular Zellen wo ein Text-Wert und Zellen wo ein Zahlen-Wert eingefügt werden muss. Ich habe bei allen Boxen DIM as String festgelegt, nun brauche ich jedoch die Zahlenwerte nicht als Text sondern als Zahl. Mit DIM as Double bei den Abfragen wo der Zahlenwert benötigt wird stoppt das Makro bei dem Inputbox-Text. Also, so funktioniert es leider nicht. Das Aufzeichnen beim Umstellen von Text auf Zahl über das Addin Fenster funktioniert auch nicht. Ich habe auch schon eine Aufzeichnung gestartet und in einem leeren Feld eine "1" eingetragen, sie kopiert und den Inhalt "Multiplizieren" eingefügt. Funktioniert leider auch nicht. Kann mir jemand mit eine VBA-Code aushelfen?
Danke viele Grüße
Tom

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inpubox
23.01.2009 11:44:00
Tino
Hallo,
versuche es mal mit der Deklarierung auf Variant.
Gruß Tino
AW: Inpubox
23.01.2009 11:50:21
Oberschlumpf
Hi Tom
Hier ein Bsp zur Verdeutlichung:

Dim Zahl1 As String 'Variable wird als Text deklariert
Dim Zahl2 As String 'Variable wird als Text deklariert
Dim Ergebnis As Double 'Variable wird als Gleitkommazahl deklariert - dieser Variablen kö _
nnen also Zahlenwerte mit Nachkommastellen zugewiesen werden
Zahl1 = "20"
Zahl2 = "5"
Ergebnis = CDbl(Zahl1 / Zahl2)
MsgBox Ergebnis 'es wird eine Messagebox mit dem Inhalt 4 angezeigt


Ich denke also, du benötigst für dein Vorhaben "nur" die CDbl-Funktion (CDbl = Convert Double), die Text- in Zahlenwerte umwandelt.
Weitere Infos zur CDbl-Funktion findest du in der Excel-Hilfe.
Hilfts?
Ciao
Thorsten

Anzeige
AW: Inpubox
23.01.2009 12:16:25
Luschi
Hallo Thorsten,
ich wollte es gar nicht glauben, was Du da schreibst, aber ein kleiner Test hat es gezeigt - Vba wandelt die Stringzahlen von allein in Rechenwerte um.
Die CDbl-Funktion kannst Du auch noch weglassen, Ergebnis hat dann die VarType-Nr. 5 (Double).
Gruß von Luschi
aus klein-Paris
PS: Ich selbst finde diese Vba-Freiheiten nicht besonderst gut und lustig, da dadurch viel Wischiwaschi entsteht.
AW: Inpubox
23.01.2009 12:35:00
Oberschlumpf
Hi Luschi (dein wirklich echter Name?!? ;-) )
Hmm...echt?
Das wusste ich noch nicht.
Der Hintergrund dieser meiner Erklärung beruht darauf, dass ich Basic lernte (es fing mit Quick Basic (QB) an), als man noch nicht Textwerte zu Berechnungen nutzen konnte - ohne div. Convert.funktionen war das Ergebnis eine Fehlermeldung ;-)
Und ich stellte gerade fest, dass es in QB gar nicht möglich ist, mit
Ergebnis = CDbl(Zahl1 / Zahl2)
zu rechnen - weil Fehler
Nur möglich ist
Ergebnis = VAL(Zahl1) / VAL(Zahl2)
was man bei Bedarf noch mit CDbl "verfeinern" kann.
Aber na gut, dieser QB-Exkurs nur am Rande ;-)
Trotzdem vielen Dank für den Tipp.
Wenn man dadurch nun wohl einiges an Tipparbeit spart, gefallen mir diese "VBA-Freiheiten" auch nicht - weil eben auch die Fehlermöglichkeiten durch möglichen Übersichtsverlust steigen.
Ciao
Thorsten
Anzeige
AW: Inpubox
23.01.2009 12:41:06
Tino
Hallo,
habe auch mal ein wenig rumgespielt, um ganz sicher zu gehen, könnte man es so machen.
Dim vWert As Variant
vWert = InputBox("Gib etwas ein!")
If IsNumeric(vWert) Then vWert = CDbl(vWert)
MsgBox TypeName(vWert)
Gruß Tino
AW: Inpubox
23.01.2009 13:17:31
Tom
Hi, ich danke Euch für die vielen Antworten.
Ich habe mal den Befehl der Inputbox beigefügt, da ich es nicht so umgestzt bekommen habe. Variant ging leider nicht.

Sub Handling()
Dim Eingabe As String
If Range("A14").Value = "" Then
Eingabe = InputBox("Handlingskosten?")
Range("A14").Value = Eingabe
End Sub


Wie Werte die dort eingetragen werdem sind immer mit einem Komma versehen.
Gruß
Tom

Anzeige
AW: Inpubox
23.01.2009 13:27:15
Tino
Hallo,
versuch es mal so.

Dim Eingabe As Variant
If Range("A14").Value = "" Then
Eingabe = InputBox("Handlingskosten?")
If IsNumeric(Eingabe) Then Eingabe = CDbl(Eingabe)
Range("A14").Value = Eingabe
End If


Gruß Tino

AW: Inpubox
23.01.2009 13:43:42
Tom
Hi Tino,
das Makro bleibt bei Sub Handling() stehen.
Gibt es nicht die Möglichkeit mit double zu arbeiten.
Beispiel:

Sub Handling()
Dim Eingabe As double
If Range("A14").Value = "" Then
double(hier weis ich nicht weiter)
Eingabe = InputBox("Handlingskosten?")
Range("A14").Value = Eingabe
End Sub


Gruß
Tom

Anzeige
AW: Inputbox mit Zahlen
23.01.2009 13:54:09
RS
Hi Tom,
Vielleicht so:

Sub Handling()
Dim Eingabe As String
If Range("A14").Value > 0 Then Exit Sub
While Eingabe = ""
Eingabe = Application.InputBox("Handlingskosten?", , , , , , , 1)
Wend
Range("A14").Value = Eingabe
End Sub


Grüsse RS

AW: Inpubox
23.01.2009 13:57:00
Tino
Hallo,
Du kannst an Double keinen String übergeben wenn dieser keine Zahl ist,
mach es so wie in meinem Beispiel gezeigt und Du bist auf der Sicheren Seite.
Gruß Tino
AW: Inpubox
23.01.2009 14:05:00
Tom
Würde ich wirklich gerne, er bleibt dann jedoch bei Sub Handling()
stehen. Die vorherigen Inputboxen z.B. für die Kundenanschrift sind alle String, ich weiß leider nicht ob es damit zusammen hängt. Die Abfrage erfogt der Reihe nach mit Call ....
Oder gibt es einen Code den ich im Anschluss anbringen kann, wo ich sagen wandel Zelle A14, A15, A16 in eine Zahl um? Das wäre auch OK.
Gruß
Anzeige
AW: Inpubox
23.01.2009 14:26:31
Tino
Hallo,
leider kann ich mit
"er bleibt dann jedoch bei Sub Handling() stehen"
nichts anfangen.
Kommt eine Fehlermeldung?
Gruß Tino
WO ist dein Code ?
23.01.2009 14:27:00
RS
Hi Tom,
Diese Diskussion ist ziemlich fruchtlos, weil uns die genauen Angaben fehler, die zusammenstöpselst. Kannst Du nicht mal den ganzen Code zeigen oder noch besser eine Mappe hochladen.
Grüsse RS
AW: Inpubox
23.01.2009 14:32:00
Tom
Hi Tino,
es hat doch geklappt. Ich weiß nicht warum, ich habe wahrscheinlich etwas falsch einegegeben.
Danke Dir vielmals.
Gruß
Tom
AW: Inpubox
23.01.2009 12:08:00
Luschi
Hallo Tom,
egal welche der folgenden Varianten Du benutzt, das Ergebnis der Eingabe ist immer ein String-Wert
Dim x As String
x = Application.InputBox("Eingabe", , , , , , , 1) - nur Zahlen können eingegeben werden
x = Application.InputBox("Eingabe", , , , , , , 2) - allgemeiner Text
x = Application.InputBox("Eingabe", , , , , , , 4) - WAHR bzw. FALSCH
x = Application.InputBox("Eingabe", , , , , , , 8) - Zelladresse
x = InputBox("Bitte gegen Sie eine Zahl ein:", "H i n w e i s")
Selbst wenn man im letzten Beispiel ein Datum eingibt, ist der Inhalt von der Variablen 'x' ein Text.
Weiß also jetzt nicht, wo das Problem ist. Will man mit x anschließend rechnen, dann muß mit Hilfe von Vba-Umwandlungsfunktionen der Wert in eine Zahl transformiert werden:
CInt(), CLng(), CDbl().
Gruß von Luschi
aus klein-Paris
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige