Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1148to1152
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
Textbox übertrag als Zahl
Fatih
Hallo und einen schönen Abend,
bräuchte wiedermal kurz eure Hilfe,
ich habe zwei Textboxen in welche der User Zahlen eingibt, beim übertragen auf die Tabelle werden aber diese Zahlen als Text formatiert, wie kann ich das verhindern? Ich möchte das excel die eingegebenen Zahlen als "Zahl" überträgt.
hier der code was momentan in meine mappe ist.
Private Sub TextBox11_AfterUpdate()
TextBox11.Text = Format(TextBox11.Text, "#,##0.00")
End Sub

Private Sub TextBox4_AfterUpdate()
TextBox4.Text = Format(TextBox4.Text, "#,##0.00")
End Sub

Vielen Dank im vorhinein
lg
fatih
AW: Textbox übertrag als Zahl
01.04.2010 18:03:05
Hajo_Zi
Hallo fatih,
formatiere die Zell und cdbl(TextBox11)

Textbox11=CDbl(Textbox11.Text)-owT
01.04.2010 18:04:17
robert
Textbox-Zahl in Tabelle
01.04.2010 19:36:59
Erich
Hallo Fatih,
deine AfterUpdate-Routinen sind ok. Zur Verdeutlichung könnte man statt
TextBox11.Text = Format(TextBox11.Text, "#,##0.00")
auch
TextBox1.Text = Format(CDbl(TextBox1.Text), "#,##0.00")
schreiben, denn
Format() soll hier eine Zahl formatieren. Da TextBox1.Text aber ein Text ist, wird automatisch
vor Format() der TextBox1.Text in eine Zahl umgewandelt. Das entspricht dem
CDbl(TextBox1.Text)
Wie du einen Textbox-Text als Zahl in eine Tabelle schreiben kannst, hat Hajo schon geschrieben:
Cells(1,1) = CDbl(Textbox1.text)
Textbox11=CDbl(Textbox11.Text) ist sinnlos, das entspräche
Textbox11=CStr(CDbl(Textbox11.Text))
Was soll's also?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
gedacht war es so wie Hajo...
01.04.2010 19:56:48
robert
Hi Erich,
es geschrieben hat, getippt habe ich es falsch, bzw.Fatih nachgemacht:-(
sorry...
gruß
robert
AW: gedacht war es so wie Hajo...
02.04.2010 09:41:17
Fatih
Einen wunderschönen Guten Morgen
Lieber Erich habe es jetzt genau so umgesetzt wie von dir beschrieben, das übertragen funktioniert jetzt super, nur beim auslesen von der Tabelle in die Txtbox werden die Trennzeichen nicht angezeigt.
Hier hab ich den Code mal rauskopiert, hättest du vielleicht noch ein tipp für mich
Private Sub UserForm_Initialize()
Dim i As Long, DatArr As Variant
With Sheets("Daten")
If .Cells(Rows.Count, 1).End(xlUp).Row > 1 Then
DatArr = .Range("A2:J" & .Cells(Rows.Count, 1).End(xlUp).Row)
ListBox1.List = DatArr
ListBox1.ListIndex = 0
End If
End With
With ListBox1
TextBox1 = .List(.ListIndex, 0)
TextBox2 = .List(.ListIndex, 2)
TextBox3 = .List(.ListIndex, 3)
TextBox4 = .List(.ListIndex, 1)
TextBox5 = .List(.ListIndex, 4)
TextBox6 = .List(.ListIndex, 5)
TextBox7 = .List(.ListIndex, 6)
TextBox8 = .List(.ListIndex, 7)
TextBox9 = .List(.ListIndex, 8)
TextBox10 = .List(.ListIndex, 9)
End With
End Sub

lg aus wien
fatih
Anzeige
AW: gedacht war es so wie Hajo...
02.04.2010 10:21:13
Gerd
Hallo Fatih!
Private Sub UserForm_Initialize()
Dim i As Long, DatArr As Variant, j As Long
With Sheets("Tabelle1")
If .Cells(Rows.Count, 1).End(xlUp).Row > 1 Then
DatArr = .Range("A2:J" & .Cells(Rows.Count, 1).End(xlUp).Row)
For i = LBound(DatArr, 1) To UBound(DatArr, 1)
For j = LBound(DatArr, 2) To UBound(DatArr, 2)
DatArr(i, j) = Format$(CCur(DatArr(i, j)), "#,##0.00")
Next
Next
ListBox1.List = DatArr
ListBox1.ListIndex = 0
End If
End With
With ListBox1
.ColumnCount = 10
TextBox1 = .List(.ListIndex, 0)
TextBox2 = .List(.ListIndex, 2)
TextBox3 = .List(.ListIndex, 3)
TextBox4 = .List(.ListIndex, 1)
TextBox5 = .List(.ListIndex, 4)
TextBox6 = .List(.ListIndex, 5)
TextBox7 = .List(.ListIndex, 6)
TextBox8 = .List(.ListIndex, 7)
TextBox9 = .List(.ListIndex, 8)
TextBox10 = .List(.ListIndex, 9)
End With
End Sub
Gruß Gerd
Anzeige
AW: gedacht war es so wie Hajo...
02.04.2010 10:51:22
Fatih
Hallo Gerd,
auch dir vielen Dank für deine Hilfe, habe es jetzt einfach so reinkopiert, beim ausführen bekomm ich die Meldung
"Typen Unverträglich"
lg
fatih
.Text in Array schreiben
02.04.2010 10:28:34
Erich
Hi Fatih,
in der Zeile
DatArr = .Range("A2:J" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
werden aus der Tabelle nur Werte (.Value), aber keine Formate in das Array übertragen,
auch wenn man das .Value am Schluss weglässt..
Mit .Text - da würden die Werte formatiert als Texte übertragen - geht das leider nicht.
Da wirst du wohl das Array in einer Schleife füllen müssen, etwa nach dem Prinzip:

Sub aat()
Dim lngZ As Long, aStrDat() As String, zz As Long, cc As Long
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
ReDim aStrDat(1 To lngZ - 1, 1 To 10)
For zz = 2 To lngZ                     ' ab Zeile 2
For cc = 1 To 10
aStrDat(zz - 1, cc) = Cells(zz, cc).Text
Next cc
Next zz
MsgBox aStrDat(3, 1)
End Sub
Du kannst die Werte natürlich auch im Makro formatieren (in Text konvertieren), etwa mit
aStrDat(zz - 1, cc) = Format(Cells(zz, cc), "#,##0.00"")
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: .Text in Array schreiben
02.04.2010 10:48:52
Fatih
Lieber Erich,
vielen Dank für dein Tipp, kann ich denn Code jetzt einfach in meine Datei reinkopieren?
sorry bin eigentlich noch ein Anfänger im VBA Bereich :-( ich weiss jetzt nicht wie ich vorgehen soll.
In den letzten Tagen habe ich sehr lehrreiche informationen bzw. Hilfestellung bekommen, insbesondere von Chris,fsc,Hayo.
Die wichtigsten Texboxen sind die 6 & 7 auf den anderen werden nur Texte ausgelesen.
Hier der gesamte Code für meine AusleseUserform:
Option Explicit
Public ListInd As Long, bol As Boolean
Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub CommandButton2_Click()
Dim i As Long
ListInd = ListBox1.ListIndex
bol = True
With Sheets("Daten")
.Cells(ListBox1.ListIndex + 2, 1) = TextBox1
.Cells(ListBox1.ListIndex + 2, 2) = TextBox4
.Cells(ListBox1.ListIndex + 2, 3) = TextBox2
.Cells(ListBox1.ListIndex + 2, 4) = TextBox3
.Cells(ListBox1.ListIndex + 2, 5) = TextBox5
.Cells(ListBox1.ListIndex + 2, 6) = CDbl(TextBox6.Text)
.Cells(ListBox1.ListIndex + 2, 7) = CDbl(TextBox7.Text)
.Cells(ListBox1.ListIndex + 2, 8) = TextBox8
.Cells(ListBox1.ListIndex + 2, 9) = TextBox9
.Cells(ListBox1.ListIndex + 2, 10) = TextBox10
End With
For i = 1 To 10
Me.Controls("TextBox" & i) = ""
Next i
ListBox1.Clear
Call t
ListBox1.ListIndex = ListInd
With ListBox1
TextBox1 = .List(.ListIndex, 0)
TextBox2 = .List(.ListIndex, 2)
TextBox3 = .List(.ListIndex, 3)
TextBox4 = .List(.ListIndex, 1)
TextBox5 = .List(.ListIndex, 4)
TextBox6 = .List(.ListIndex, 5)
TextBox7 = .List(.ListIndex, 6)
TextBox8 = .List(.ListIndex, 7)
TextBox9 = .List(.ListIndex, 8)
TextBox10 = .List(.ListIndex, 9)
End With
MsgBox "Daten wurden korrigiert!"
End Sub

Private Sub CommandButton4_Click()
Dim i As Long
If ListBox1.ListIndex = 0 Then MsgBox ("1.Datensatz wird angezeigt") Else ListBox1.ListIndex =  _
ListBox1.ListIndex - 1
End Sub

Private Sub CommandButton3_Click()
Dim i As Long
If ListBox1.ListIndex = ListBox1.ListCount - 1 Then MsgBox ("kein weiterer Datensatz") Else  _
ListBox1.ListIndex = ListBox1.ListIndex + 1
End Sub

Private Sub ListBox1_Change()
Dim i As Long
If bol Then bol = False: Exit Sub
For i = 1 To 10
Me.Controls("TextBox" & i) = ""
Next i
With ListBox1
TextBox1 = .List(.ListIndex, 0)
TextBox2 = .List(.ListIndex, 2)
TextBox3 = .List(.ListIndex, 3)
TextBox4 = .List(.ListIndex, 1)
TextBox5 = .List(.ListIndex, 4)
TextBox6 = .List(.ListIndex, 5)
TextBox7 = .List(.ListIndex, 6)
TextBox8 = .List(.ListIndex, 7)
TextBox9 = .List(.ListIndex, 8)
TextBox10 = .List(.ListIndex, 9)
End With
End Sub

Private Sub UserForm_Initialize()
Dim i As Long, DatArr As Variant, j As Long
With Sheets("Daten")
If .Cells(Rows.Count, 1).End(xlUp).Row > 1 Then
DatArr = .Range("A2:J" & .Cells(Rows.Count, 1).End(xlUp).Row)
ListBox1.List = DatArr
ListBox1.ListIndex = 0
End If
End With
With ListBox1
.ColumnCount = 10
TextBox1 = .List(.ListIndex, 0)
TextBox2 = .List(.ListIndex, 2)
TextBox3 = .List(.ListIndex, 3)
TextBox4 = .List(.ListIndex, 1)
TextBox5 = .List(.ListIndex, 4)
TextBox6 = .List(.ListIndex, 5)
TextBox7 = .List(.ListIndex, 6)
TextBox8 = .List(.ListIndex, 7)
TextBox9 = .List(.ListIndex, 8)
TextBox10 = .List(.ListIndex, 9)
End With
End Sub
Sub t()
Dim DatArr As Variant
With Sheets("Daten")
If .Cells(Rows.Count, 1).End(xlUp).Row > 1 Then
DatArr = .Range("A2:J" & .Cells(Rows.Count, 1).End(xlUp).Row)
ListBox1.List = DatArr
ListBox1.ListIndex = 0
End If
End With
End Sub
Vielen Dank für deine Hilfe Erich
lg
fatih
Anzeige
Zahlen formatiert in Array und Liste schreiben
02.04.2010 23:37:16
Erich
Hi Fatih,
schau dir das mal an:

Private Sub UserForm_Initialize()
Call Tab2Liste
With ListBox1
'   .ColumnCount = 10             ' das gehört hier wohl nicht hin
TextBox1 = .List(.ListIndex, 0)
TextBox2 = .List(.ListIndex, 2)
TextBox3 = .List(.ListIndex, 3)
TextBox4 = .List(.ListIndex, 1)
TextBox5 = .List(.ListIndex, 4)
TextBox6 = .List(.ListIndex, 5)
TextBox7 = .List(.ListIndex, 6)
TextBox8 = .List(.ListIndex, 7)
TextBox9 = .List(.ListIndex, 8)
TextBox10 = .List(.ListIndex, 9)
End With
End Sub
Sub Tab2Liste()                                    ' war dein t()
Dim lngZ As Long, DatArr As Variant, zz As Long
With Sheets("Daten")
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Rows.Count, 1).End(xlUp).Row > 1 Then
DatArr = .Range("A2:J" & lngZ)                  ' Standard-Einlesen (Texte)
For zz = 2 To lngZ
DatArr(zz - 1, 6) = .Cells(zz + 1, 6).Text                ' Format aus Tab.
DatArr(zz - 1, 7) = Format(DatArr(zz - 1, 7), "#,##0.00") ' neues Format
Next zz
ListBox1.ColumnCount = 10  ' besser hier
ListBox1.List = DatArr
ListBox1.ListIndex = 0
End If
End With
End Sub
Das Einlesen aus der Tabelle (war dein t()) geschieht zunächst wie bisher ("Standard-Einlesen (Texte)").
Danach werden für Spalte 6 die Werte noch mal als .Text, also mit dem Format in der Tabelle, in DatArr eingelesen,
für Spalte 7 werden die vorher eingelesenen Werte neu formatiert.
Damit hast du zwei Möglichkeiten zur Auswahl.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Zahlen formatiert in Array und Liste schreiben
06.04.2010 10:25:05
Fatih
Hallo und Guten Morgen Erich,
sorry das ich so spät zurück schreibe.
vorerst vielen Dank nochmals für deine Hilfe. Habe jetzt den Code reinkopiert, passt auch sehr gut bis auf ein kleinen Fehler, was ich leider nicht beheben kann.
es ist auch schwierig zu erklären :-( ich hab eine jpg hochgeladen
Der Wert von Spalte F wird falsch zugeordnet, Die Spalte 6 im Auswahlfeld müsste eine Zeile runter verschieben werden, wie mach ich das nur?
Danke im voraus
Userbild
vermutlich mein Kopierfehler
06.04.2010 10:55:15
Erich
Hi Fatih,
genauer habe ich mir das jetzt nicht angesehen, aber ich denkke, ich habe da einen Kopierfehler in einer Zeile.
Statt
DatArr(zz - 1, 6) = .Cells(zz + 1, 6).Text ' Format aus Tab.
müsste da wohl stehen
DatArr(zz - 1, 6) = .Cells(zz, 6).Text ' Format aus Tab.
War es das?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: vermutlich mein Kopierfehler
06.04.2010 10:59:34
Fatih
Hallo Erich,
genau das war es :-) Jetzt funktioniert alles einwandfrei.
Ich danke dir nochmals für deine rasche Hilfe.
Wünsche noch einen wunderschönen Tag.
lg aus wien
fatih

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige