Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
808to812
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
808to812
808to812
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

TextBox Zahl anzeigen

TextBox Zahl anzeigen
09.10.2006 21:43:29
DieterB
Ich habe in einer UserForm eine TextBox, in der Ungerade Zahlen eingegeben werden können. Diese Ungerade Zahl, möchte ich aufrunden auf eine ganze 100er Zahl, und diese Aufgerundete Zahl sollte dann in die TextBox zurückgeschrieben und angezeigt werden.
z.B eine Zahl wird mit 838 eingegenen, dann sollte in der TextBox 900 angezeigt werden.
Läßt sich das lösen ?
Danke im Voraus für jede Hilfe
Dieter

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox Zahl anzeigen
09.10.2006 22:57:38
Stefan
Hallo Dieter,
probiers mal mit:
intNeueZahl=Application.WorksheetFunction.RoundUp(intAlteZahl / 100, 0)*100
Die Funktion sollte Dir jede intAlteZahl auf die naechsten vollen Hundert aufrunden (intNeueZahl)
Schoene Gruesse
Stefan
AW: Stefan
09.10.2006 23:44:32
DieterB
Hallo Stefan
Danke für die Lösung.
Muß ich den Code unter " Private Sub txtMaß_Change() " eingeben, oder wo anders.
Wenn ich hier eintrage, bekomme ich eine Fehlermeldung:
Fehler beim Komplilieren
Variable nicht definiert
und dann ist " intAlteZahl " blau unterlegt.
Mache ich etwas falsch ?
Dieter
AW: Stefan
10.10.2006 00:04:35
Reinhard
Hi Dieter,
bin müd, deshalb keine Antwort zu Frage 1, müßte ich ja austesten .-)
Zum Anderen,
Anfangs des Code reinschreiben:
Dim intAlteZahl as Integer
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Stefan
10.10.2006 03:03:14
Stefan
Hallo Dieter,
das ist von aussen schwer einzuschaetzen, weil wir ja Deinen Code nicht sehen. Aber ich geh jetzt mal von folgendem aus: Du hast ein Programm, mit dem Du in der Lage sein solltest eine Zahl aus deiner Textbox irgendwo hinzuschreiben, sagen wir mal eine Messagebox (oder eine Zelle, oder...). Das einzige was diese Zeile macht ist, die Zahl umzuwandeln in eine gerundete Zahl. Das sollte am besten wohl da passieren, wo Du die neue gerundete Zahl ausgeben willst. Und da ich grad ein bisschen Zeit hab, schreib ich mal ein bisschen Code wie ich das mein (und das ist nur ein Beispiel, es haengt davon ab wie der Rest Deines Codes aussieht!)

Sub EinKleinesBeispiel
Dim intEingabe as integer
Dim intAusgabe as integer
intEingabe=CInt(Form1.TextBox1.Text) 'Weisst der variablen intEingabe den Wert der Textbox zu
intAusgabe=Application.WorksheetFunction.RoundUp(intEingabe/100)*100 'Weisst der Variablen intAusgabe den gerundeten Wert von intEingabe zu
msgbox "Die gerundete Zahl heisst " & intAusgabe 'Ausgabe der Zahl
End Sub

Ich hoffe das hilft Dir weiter.
Schoene Gruesse
Stefan
Anzeige
AW: an Stefan
10.10.2006 10:10:58
DieterB
Hi Stefan
Mit deiner Annahme liegst Du Richtig.
Anbei mein Code für die Eingabe und eintrag in zwei Tabellenblätter (Celle):

Private Sub txtHöhe_Change()
With Worksheets("Auswahl")
.Range("I8").Value = txtHöhe.Text
With Worksheets("Stückliste")
.Range("F2").Value = txtHöhe.Text
End With
End With
End Sub

Wenn ich jetzt da Deinen Code eingebe:
Dim intEingabe as integer
Dim intAusgabe as integer
intEingabe=CInt(Form1.TextBox1.Text) 'Weisst der variablen intEingabe den Wert der Textbox zu
intAusgabe=Application.WorksheetFunction.RoundUp(intEingabe/100)*100 'Weisst der Variablen intAusgabe den gerundeten Wert von intEingabe zu
msgbox "Die gerundete Zahl heisst " & intAusgabe 'Ausgabe der Zahl
End Sub
bekomme ich wieder eine Fehlermeldung " Variable ist nicht definiert "
und unterlegt "Form1."
Vieleicht weißt Du die Lösung.
Die Antwort von Reinhold bringe ich auch nicht zum laufen.
Dieter
Anzeige
AW: an Stefan
10.10.2006 13:05:39
Stefan
Hallo Dieter,
Der Code ist die Verbindung von Deinem urspruenglichen und meinem Code:

Private Sub txtHöhe_Change()
Dim intEingabe as integer
Dim intAusgabe as integer
intEingabe=CInt(txtHöhe.Text)
intAusgabe=Application.WorksheetFunction.RoundUp(intEingabe/100)*100
Worksheets("Auswahl").Range("I8").Value = intAusgabe
intEingabe=CInt(txtHöhe.Text)
intAusgabe=Application.WorksheetFunction.RoundUp(intEingabe/100)*100
Worksheets("Auswahl").Range("I8").Value = intAusgabe
Worksheets("Stückliste").Range("F2").Value = intAusgabe
End Sub

Der sollte jetzt fuer Dich funktionieren.
Schoene Gruesse
Stefan
Anzeige
AW: an Stefan
10.10.2006 16:28:47
DieterB
Hi Stefan
Danke erst einmal.
Bekommen aber wieder eine Fehlermeldung " Argument ist nicht optimal "
Dieter
AW: an Stefan
10.10.2006 16:31:50
DieterB
Hi Stefan
Habe ja noch etwas vergessen.
Der Cursor steht bei " RoundUp " und hier kommt die Fehlermeldung.
Dieter
AW: an Stefan
10.10.2006 19:08:29
Stefan
Uups, da hab ich doch glatt die halbe Formel weggelassen, und dafuer mehr anderen Code geposted als ich eigentlich wollte (ich dachte eigentlich dass ich Copy&Paste beherrsche). Sorry!
Hier der (hoffentlich) richtige Code:

Private Sub txtHöhe_Change()
Dim intEingabe as integer
Dim intAusgabe as integer
intEingabe=CInt(txtHöhe.Text)
intAusgabe=Application.WorksheetFunction.RoundUp(intEingabe/100,0)*100
Worksheets("Auswahl").Range("I8").Value = intAusgabe
worksheets("Stückliste").Range("F2").Value = intAusgabe
End Sub

Schoene Gruesse
Stefan
Anzeige
AW: an Stefan ein Dankeschön
10.10.2006 20:01:18
DieterB
Hi Stefan
Ich danke Dir für deine Hilfe. Dein Code ist so in Ordnung, es funktioniert.
Eine Frage hätte ich noch:
Ist es auch Möglich, daß sich die eingegeben Ungerade Zahl in der TextBox, auf die gerundete gerade Zahl ändert.
Also, daß ich die gerundete Zahl auch in der UserForm sehe ?
Herzlichen Dank
Dieter
AW: an Stefan ein Dankeschön
10.10.2006 20:28:06
Stefan
Hallo Dieter,
Klar geht das, recht einfach sogar, aber vorher noch eine kleine Nachfrage. Ich hab das am Anfang mit den "ungeraden" Zahlen komplett ueberlesen. Die Formel rundet jetzt jede Zahl, die in der Textbox steht, auf die naechste 100er Zahl auf, egal ob gerade oder ungerade. Ich hoffe das ist so ok.
Zu Deiner Nachfrage:

Private Sub txtHöhe_Change()
Dim intEingabe as integer
Dim intAusgabe as integer
intEingabe=CInt(txtHöhe.Text)
intAusgabe=Application.WorksheetFunction.RoundUp(intEingabe/100,0)*100
Worksheets("Auswahl").Range("I8").Value = intAusgabe
worksheets("Stückliste").Range("F2").Value = intAusgabe
txtHöhe.Text = intAusgabe
End Sub

Also nur eine Zeile mehr. Sollte funktionieren...
Schoene Gruesse
Stefan
Anzeige
AW: an Stefan ein Dankeschön
10.10.2006 20:39:23
DieterB
Hallo Stefan
Jetzt beißt sich die Katz in den Schwanz:
Wenn ich jetzt eine Zahl eingeben will, stht sofort " 100 " drin auch wenn es eine
" 7 " ist.
Komisch was.
Dieter
AW: an Stefan ein Dankeschön
10.10.2006 21:29:56
Stefan
Hallo Dieter,
Nicht wirklich, da das Change-Ereignis immer dann ausgefuehrt wird, wenn sich der Wert in der Textbox aendert. Um das zu umgehen, musst Du Dir ein anderes Ereignis suchen. Ersetz Deinen Code z.B. durch folgenden:

Private Sub TxtHöhe_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode <> 13 Then Exit Sub
Dim intEingabe As Integer
Dim intAusgabe As Integer
If Not IsNumeric(TxtHöhe.Text) Then Exit Sub
intEingabe = CInt(TxtHöhe.Text)
intAusgabe = Application.WorksheetFunction.RoundUp(intEingabe / 100, 0) * 100
Worksheets("Auswahl").Range("I8").Value = intAusgabe
Worksheets("Stückliste").Range("F2").Value = intAusgabe
TxtHöhe.Text = intAusgabe
End Sub

Dieser Code wird jetzt nicht durch das Change-Ereignis ausgeloest, sondern durch das druecken einer Taste im Textfeld. Wenn die Taste NICHT die Return-Taste war. (Keycode13) wird der Rest des Codes ausgefuehrt. D.h. Du musst jetzt deine Taste mit einem Return abschliessen, dann werden die Zahlen gerechnet.
Du koenntest auch stattdessen einen Button neben das Textfeld setzen und die Berechnung nach einem Click darauf starten lassen.
Eine letzte Moeglichkeit gaebe es wenn Du sagen koenntest das Deine Zahlen immer 3-stellig sind. Dann kann man das Makro auch immer nachdem die dritten Stelle eingegeben wurde reagieren lassen.
Schoene Gruesse
Stefan
Anzeige
AW: an Stefan ein Dankeschön
10.10.2006 22:40:30
DieterB
Hi Stefan
Das es sich so in die Länge zieht, habe ich nicht gedacht !!
Dein Code funktioniert jetzt so " OK "
Was muß ich am KeyCode ändern, wenn ich mit der TAB Taste auslösen möchte ?
Aber zu deinen Anmerkungen wegen eines anderen Ereignis:
Der Hintergrund der ganzen Sache ist eine Berechnung einer Materialzusammenstellung
(Stückliste) und Preisermittlung (Auswahl). Hier ist Grundlage Breite x Tiefe x Höhe. Soweit ist in meinem Code alles OK. Das Problem das Du ja versuchst zu lösen ist eigentlich ganz einfach. " Die Höhe muß ich in ganzen 100er Sprüngen haben und Anzeigen wegen eines Teiles, das 100mm Höhe hat ".
Für die Berechnung habe ich eine Button "berechnen" eingebaut der die Sache auslöst.
Auch wenn mit dem "berechnen" Button die Änderung in der TextBox erscheint, wäre ich vollstens zufrieden. Denn erst wenn berechnet ist, kann die Stückliste sowie ein Datenblatt gedruckt werden, und in diese werden Breite x Tiefe x Höhe eingetragen.
Danke Dir sehr für Deine Hilfe
Dieter
Anzeige
AW: an Stefan ein Dankeschön
11.10.2006 00:36:06
Stefan
Hallo Dieter,
TAB ist 9, und wenn Du das Makro durch den Button ausloesen lassen willst, dann einfach den Code in das 'Button'_Click Ereignis schreiben (dann ohne die Zeile "If KeyCode "...)
Schoene Gruesse
Stefan
AW: an Stefan Superdankeschön
11.10.2006 21:38:13
DieterB
Hi Stefan
Nochmals ein Herzliches Dankeschön.
Du hast mir für meine Wünsche die letzen Lösungen gebracht.
Mein Progrämmchen läuft so nach meinen Vorstellungen.
Vieleicht kannst Du mir einmal wieder helfen.
Nochmals Superdanke an Dich
Dieter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige