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

Kann doch nicht so schwer sein...

Kann doch nicht so schwer sein...
15.10.2007 20:49:00
Sophie
Hallo zusammen,
habe eine Userform die Textboxen enthält, hier gibt der User Geldbeträge ein.
Nun mein Problem:
Wenn jetzt der Betrag z.B. 23,69 eingetippt wird, soll nach einem Druck auf einen Button dieser Betrag in eine Zelle geschrieben werden. Klappt super die Zelle weißt genau den Betrag von 23,69 auf. Nun das komische klicke ich nun auf die Zelle erscheinen mir nicht die eingetragenen 25,63 unterhalb der Excelschaltflächen, sondern ein Betrag 23,6900005340576 läßt sich dieses irgendwie ändern?
Übergebe den Betrag zuerst einer Variablen, das ist mein Problem wie muß ich die deklarieren damit sie mir meinen Wunsch erfüllt?
Wenn ich den Betrag direkt (ohne den Zwischenweg Variable) aus der Userform übetrage funktioniert dieses.
Die Frage ist, kann ich die Variable als String deklarieren, oder bekomme ich dann später Probleme beim weiterbearbeiten des eingetragenen Betrages, da er ja nicht als Zahl in die Zelle geschrieben wird.
Schönen Gruß
Sophie

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
... nicht so schwer sein... oder doch!
15.10.2007 21:08:51
NachFrager
Hi
Dein Text:
Wenn jetzt der Betrag z.B. 23,69 eingetippt wird, soll nach einem Druck auf einen Button dieser Betrag in eine Zelle geschrieben werden. Klappt super die Zelle weißt genau den Betrag von 23,69 auf. Nun das komische klicke ich nun auf die Zelle erscheinen mir nicht die eingetragenen 25,63 unterhalb der Excelschaltflächen, sondern ein Betrag 23,6900005340576 läßt sich dieses irgendwie ändern?
Sicher ?
Zeig uns doch mal Deinen Code
Gruß Nachfrager

AW: ... nicht so schwer sein... oder doch!
15.10.2007 21:26:00
Sophie
Hallo hier meine Codezeilen:
In der Userform:

Private Sub cmdEinbuchen_Click()
Dim Betrag As Single
Dim BD As Date
Betrag = Me.txtEinnahmen.Value
BD = Me.txtBuchungsdatum.Value
Call Einbuchen(Betrag, BD)
End Sub


Im Modul:
Sub Einbuchen(Betrag As Single, BD As Date)
Dim BlockZelle As Range
'Tabellenblatt für ausgewähltes Datum anwählen
Worksheets(MonthName(Month(BD))).Activate
'leere Zeile für Eintragung suchen
For Each BlockZelle In [Q8:Q480]
If BlockZelle = "" Then Exit For
Next
'wenn es sich um Einnahmen handelt...
Cells(BlockZelle.Row, 2) = Betrag
Cells(BlockZelle.Row, 11) = BD
End Sub


Schönen Gruß
Sophie

Anzeige
AW: ... nicht so schwer sein... oder doch!
15.10.2007 22:03:21
Daniel
Hi
noch besser als Code ist immer die Beispieldatei.
ums zu testen muß ich jetzt erst noch deine Userform nachbauen, und dazu bin ich zu faul.
daher auch keine Antwort auf deine Frage, weil ich auch nichts ausprobieren kann.
außderdem, rein aus dem Code kann ich jetzt nichts erkennen, außer, daß du in verschiedenen Subs den gleichen Variablennamen verwendest. Ich bin mir nicht sicher, ob Excel daß so mag, vielleicht macht es auch nichts aus, aber zur Sicherheit sollte man es vermeiden.
Man könnte hier u.U. auch die beiden Variablen Betrag und BD global deklarieren, dann können sie von allen SUBs verwendet werden und du sparts dir die übergabe.
Ob das sinnvoll ist, lässt sich aber nur entscheiden, wenn man den restlichen Code kennt.
noch ein kleine Hinweis, deine Schleife zum Suchen der nächsten freien Zelle kann man auch eleganter und schneller formulieren:

set BlockZelle = Range("Q8")
if BlockZelle.value  "" then set BlockZelle = Range("Q7").end(xldown).offset(1,0)


gruß, Daniel

Anzeige
...gleiche Variablennamen in verschiedenen...
16.10.2007 02:15:00
Luc:-?
...Subroutinen muss man mitnichten vermeiden, Daniel;
für den Pgmierer kann das sogar Vorteile haben, wenn es immer um das Gleiche geht! Eine innerhalb einer Prozedur deklarierte Variable ist nämlich immer nur in dieser gültig und hat keinerlei Auswirkungen nach außen.
Gruß Luc :-?

AW: ...gleiche Variablennamen in verschiedenen...
16.10.2007 22:10:23
Daniel
Hi
danke für den Hinweis, wenn das sicher so ist, solls mir recht sein.
dann brauche ich mir nicht in jeder Subroutine nen neuen Schleifenzähler auszudenken.
gruß, Daniel

AW: Kann doch nicht so schwer sein...
15.10.2007 21:10:00
Gerd
Hallo Sophie,
deklariere die Variable als Currency.
Dim curBetrag as Currency
curBetrag= CCur(Userform1.TextBox1.Text)
Gruß Gerd

Anzeige
AW: Kann doch nicht so schwer sein...
15.10.2007 22:34:36
Renee
Hallo Sophie,
Die Deklaration der Variablen als Single ist unsinnig (4 Byte Single-Precision), wenn du sie später in eine Zelle abfüllst. Genau darum erhälst Du den 'komischen' Wert, weil numerische Werte in Zellen in Double (8 Byte Double-Precision) abgespeichert werden. Dimensionier die Variablen als Double und du bist fein raus.
GreetZ Renee

...so sit es! Das merkst du sofort,...
16.10.2007 02:22:04
Luc:-?
...Sophie,
wenn du die Fktionalität einer einfachen Standardfkt mit Divisionen wie bspw MITTELWERT per VBA iterativ nachbildest und dabei die Inputvariablen als Single deklarierst... Du wirst kaum mal das gleiche Ergebnis erhalten wie es die xlFkt liefert!
Gruß Luc :-?

Anzeige
AW: Kann doch nicht so schwer sein...
16.10.2007 06:55:00
Sophie
Vielen Dank an Euch allen.
Habe Deine Lösung genommen Renee, klappt super.
Gruß Sophie

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige