Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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 füllen und in Tabelle übertragen
16.01.2019 15:51:11
Peter
Hallo ihr Excelspezialisten,
ich fülle eine Listbox mit Array. Dann möchte ich die Textbox entweder mit Text oder mit Datum oder mit Währung, oder mit einer Formel füllen und dann den jeweiligen Wert in die Tabelle übernehmen.
Die Listbox fülle ich mit folgendem Code:
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False 'flackern abschalten
ListBox1.ColumnCount = 14
ListBox1.ColumnWidths = "1cm;1cm;1cm;1cm;1cm;1,5cm;1cm;2cm;4cm;2cm;2cm;2cm;2cm"
arrWerte = Sheets("Tabelle4").[A1:N54]
ListBox1.List = arrWerte
Application.ScreenUpdating = True
End Sub
Die Daten von der Listbox in die Textboxes übernehme ich mit folgendem Code:
Private Sub ListBox1_Click()
If ListBox1.Tag  "" Then Exit Sub
TextBox1 = ListBox1.List(ListBox1.ListIndex, 0)
TextBox2 = ListBox1.List(ListBox1.ListIndex, 1)
TextBox3 = ListBox1.List(ListBox1.ListIndex, 2)
TextBox4 = ListBox1.List(ListBox1.ListIndex, 3)
TextBox5 = ListBox1.List(ListBox1.ListIndex, 4)
TextBox6 = ListBox1.List(ListBox1.ListIndex, 5)
TextBox7 = ListBox1.List(ListBox1.ListIndex, 6)
TextBox8 = ListBox1.List(ListBox1.ListIndex, 7)
TextBox9 = ListBox1.List(ListBox1.ListIndex, 8)
TextBox10 = ListBox1.List(ListBox1.ListIndex, 9)
TextBox11 = ListBox1.List(ListBox1.ListIndex, 10)
TextBox12 = ListBox1.List(ListBox1.ListIndex, 11)
TextBox13 = ListBox1.List(ListBox1.ListIndex, 12)
TextBox14 = ListBox1.List(ListBox1.ListIndex, 13)
End Sub
Das Zurückschreiben von Textbox in Tabelle erfolgt mit folgendem Code:
Private Sub CommandButton1_Click()
Dim WB As Workbook                              'benötigt für akuelle Workbook
Dim WS1 As Worksheet                            'benötigt für Kontodaten
Set WB = ThisWorkbook                           'benötigt für Combobox2 Kontoart und Combobox1  _
Kontodaten
Set WS1 = WB.Sheets("Tabelle4")             'benötigt für Combobox1 Kontodaten
Dim xZeile As Long
If TextBox1 = "" Then Exit Sub
If ListBox1.ListIndex = 0 Then
xZeile = [a65536].End(xlUp).Row + 1
Else
xZeile = ListBox1.ListIndex + 1
End If
'WS1.Cells(xZeile, 1) = TextBox1
WS1.Cells(xZeile, 2) = TextBox2
WS1.Cells(xZeile, 3) = TextBox3
WS1.Cells(xZeile, 4) = TextBox4
WS1.Cells(xZeile, 5) = TextBox5
WS1.Cells(xZeile, 6) = TextBox6
WS1.Cells(xZeile, 7) = TextBox7
WS1.Cells(xZeile, 8) = TextBox8
WS1.Cells(xZeile, 9) = TextBox9
WS1.Cells(xZeile, 10) = TextBox10
WS1.Cells(xZeile, 11) = TextBox11
WS1.Cells(xZeile, 12) = TextBox12
WS1.Cells(xZeile, 13) = TextBox13
WS1.Cells(xZeile, 14) = TextBox14
'Auswahl löschen
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""
TextBox11.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
TextBox14.Value = ""
UserForm_Initialize
End Sub
Was muss ich bitte ändern, damit die richtigen Werte in die Tabelle übernommen werden und muss ich bei der Eingabe in die Textbox irgendwelche Eingabevorgaben berücksichtigen? z. B. Format-Währung, Format-Datum ect.
Besten Dank für eure Hilfe.
Gruss
Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Textbox füllen und in Tabelle übertragen
16.01.2019 16:31:58
Matthias
Moin!
Je nachdem was du übergibst (vermute mal, dass das für die Textboxen immer gleich ist), de Zelle vorher oder mit dem COde formatieren. Beider Übergabe, dann das richtige Format wählen - die Textboxen haben ja nur Text. Dazu bspw. für Uhrzeiten cdbl(TextBox1) schreiben. Für Währung oder Zahlen das gleiche bzw. ggf. clng(TextBox1). Kommt halt immer drauf an, was der WErt darstellen soll.
VG
..könnte man durch Recherchieren herausfinden...
16.01.2019 16:39:17
robert
..aber nach dem Motto: lass andere für mich arbeiten...
wer will, der soll, ich nicht......
AW: Textbox füllen und in Tabelle übertragen
16.01.2019 17:09:14
Daniel
Hi
das Problem ist, dass in der Listbox grundsätzlich Text steht.
wenn du diesen Text in eine Zelle schreibst, überprüft Excel als erstes, ob der eingegebene Text ein Datum , eine Zahl oder eine Formel sein könnte und wird dann versuchen, die Eingabe in den entsprechenden Datentyp zu wandeln.
wenn du das von Hand machst, wendet Excel hierbei die landestypischen Regeln und Schreibweisen an, um die Texte zu erkennen und umzwandeln (Komma = Dezimaltrennzeichen)
machst du das gleiche jedoch per Makro, wird Excel unabhängig von der Ländereinstellung immer die US-amerikanischen anwenden (Punkt = Dezimaltrennzeichen)
um das Problem zu lösen, gibt's zwei Möglichkeiten:
a) man programmiert die Umwandlung selbst:
If IsDate(Textbox1.Text) then
WS1.Cells(xZeile, 1) = CDate(Textbox1.Text)
ElseIf IsNumeric(Textbox1.Text) Then
WS1.Cells(xZeile, 1) = CDbl(Textbox1.Text)
Else
WS1.Cells(xZeile, 1) = Textbox1.Text
End if
b) man schreibt den Textboxwert in die .FormulaLocal-Eigenschaft der Zelle, dann werden bei der Umwandlung die Landestypischen Regeln und Schreibweisen angewendet:
WS1.Cells(xZeile, 1).FormulaLocal = Textbox1.Text

diese Methode hätte auch den Vorteil, dass du auch Formeln in die TextBox schreiben kannst("=1+2") und diese dann als Formel in die Zellen geschrieben werden.
Beispiel:
WS1.Cells(xZeile, 1) = "1.2" ergibt die Zahl 1,2
WS1.Cells(xZeile, 1).FormulaLocal = "1.2" ergibt den 1.Februar im aktuellen Jahr als Datum
Gruß Daniel
Anzeige
AW: Textbox füllen und in Tabelle übertragen
16.01.2019 17:17:56
Peter
Hallo Daniel,
Deine Lösung ist toll - besten Dank.
Ich habe zwischenzeitlich folgende Lösung gefunden:
If TextBox2 > "" And Not IsNumeric(TextBox2) Then
WS1.Cells(xZeile, 2) = (TextBox2.Text)
ElseIf TextBox2 > "" And IsDate(TextBox2) Then
WS1.Cells(xZeile, 2) = CDate(TextBox2)
ElseIf TextBox2 > "" And IsNumeric(TextBox2) Then
WS1.Cells(xZeile, 2) = CDbl(TextBox2)
Else
WS1.Cells(xZeile, 2) = CDbl("0.00 €")
End If
Dies funktioniert nach meinem Test einwandfrei.
Siehst Du hierin noch einen Fehler?
Dann habe ich noch ein letzte Problem. Ich möchte eine Formel in die Textbox einfügen. Wie übernehme ich diese dann?
Besten Dank für Deine Hilfe.
Gruss
Peter
Anzeige
AW: Textbox füllen und in Tabelle übertragen
16.01.2019 17:28:57
Daniel
HI
wenn dein Text in der TextBox mit "=" beginnt, wird Excel diesen beim Einfügen als Formel erkennen und entsprechend in die Zelle eintragen und berechnen.
wenn du die Formel in der TextBox in deutsch schreiben willst, musst du das auch angeben:
...Cells(...).FormulaLocal = Textbox1.Text
wenn du die Formel in englisch angibst, reicht auch:
...Cells(...) = Textbox1.Text
(aber steht das nicht so in meiner ersten Antwort schon so drin?)
Gruß Daniel
AW: Textbox füllen und in Tabelle übertragen
16.01.2019 17:33:17
Peter
Hallo Daniel,
besten Dank - habe ich überlesen.
Mit welchem elseif Textbox1 isformula? muss ich hier arbeiten, habe ich noch nicht gemacht.
Besten Dank
Gruss
Peter
Anzeige
AW: Textbox füllen und in Tabelle übertragen
16.01.2019 17:35:52
Daniel
if left(Textbox1.Text, 1) = "=" Then
Gruß Daniel
AW: Textbox füllen und in Tabelle übertragen
16.01.2019 19:21:39
Peter
Hallo Daniel,
besten Dank - werde ich morgen gleich testen.
Wünsche Dir noch einen schönen Abend.
Gruss
Peter
AW: Textbox füllen und in Tabelle übertragen
17.01.2019 08:43:57
Peter
Hallo Daniel,
das ganze funktioniert doch nicht so wie ich es mir vorstelle.
Wenn der Wert von Textbox nicht mehr Textbox1 sondern Textbox2 in Tabelle übergeben wird, habe ich folgende Möglichkeiten:
1. Wert = Text
2. Wert = Zahl
3. Wert = Währung
4. Wert = Datum
5. Wert = Formel
Nun habe ich festgestellt, dass ich zusammen mit der Übergabe des Wertes in Tabelle nicht nur den Wert übergeben darf, sondern auch die Zelle in das entsprechende Format umwandeln muss.
~f
If IsDate(TextBox2.Text) Then
WS1.Cells(xZeile, 2) = CDate(TextBox2.Text)
WS1.Cells(xZeile, 2).NumberFormat = "DD.MM.YYYY" 'Formatiert als Datum
End If
If IsNumeric(TextBox2.Text) Then
WS1.Cells(xZeile, 2) = CDbl(TextBox2.Text)
WS1.Cells(xZeile, 2).NumberFormat = "0" 'Formatiert als Zahl
End If
If IsNumeric(TextBox2.Value) = True Then
WS1.Cells(xZeile, 2) = CDbl(TextBox2.Text)
WS1.Cells(xZeile, 2).NumberFormat = "#,##0.00 $" 'Formatiert als Währung
end if
If IsNumeric(Textbox2.value) = False Then
WS1.Cells(xZeile, 2) = (TextBox2.Text)
WS1.Cells(xZeile, 2).NumberFormat = "General" 'Formatiert als Standard
End If
If Left(TextBox1.Text, 1) = "=" Then
WS1.Cells(xZeile, 2).FormulaLocal = "="
End If
~f
bei Formel Fehler was muss ich in Textbox einfügen und wie wird Formel übernommen?
Wie wird erkannt um welchen Wert es sich in der Textbox handelt?
Kannst Du mir bitte helfen.
Gruss
Peter
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige