Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1600to1604
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 Werte in Array einlesen
18.01.2018 14:32:13
Peter
Hallo liebe Foristen,
ich habe einen Code gefunden und angepasst, der als Text gespeichert Zahlen in verschiedene Formate umwandelt. Um das ganze benutzerfreundlicher zu gestalten, habe ich mir eine UserForm mit Combo- und TextBoxen gebaut. Mittels der ComboBoxen können verscheidene Formate, wie "Standard, Zahl, Datum etc." ausgewählt werden. In die TextBoxen sollen die Nummer der Spalten, getrennt mit einem Kommata, eingetragen werden.
Hier mein Code:

Dim  LetzteZeile,i, s As Long
Dim Spalten
Spalten = Array("UserForm1.TextBox3.Value") ' Das Problem!
For s = 0 To UBound(Spalten) - 1
LetzteZeile = Cells(Rows.Count, Spalten(s)).End(xlUp).Row
For i = 3 To LetzteZeile
With Cells(i, Spalten(s))
If .Value  "" Then
.Value = CDbl(.Value)
Select Case UserForm1.ComboBox1.Value
Case "General"
.NumberFormat = "General"
Case "Number"
.NumberFormat = "#,##0.00"
Case "Number"
.NumberFormat = "0"
Case "Currency"
.NumberFormat = "#,##0.00;[Red]-#,##0.00"
Case "Time "
.NumberFormat = "hh:mm:ss"
Case "Date"
.NumberFormat = "dd/mm/yyyy"
End Select
End If
End With
Next
Next

Mein Problem:
Mein Code funktioniert nur, wenn ich die Spalten direkt in das Array im Code eintrage. Allerdings möchte ich, dass die Werte aus der TextBox übernommen werden. Die Auswahl der Formate über die ComboBoxen funktioniert.
Bitte um Eure Hilfe!
Grüße
Peter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox Werte in Array einlesen
18.01.2018 14:38:49
Rudi
Hallo,
Spalten = Split(UserForm1.TextBox3.Value,",")
Gruß
Rudi
AW: TextBox Werte in Array einlesen
18.01.2018 15:43:14
Peter
Hallo Rudi,
die Variante habe ich auch schon probiert, allerdings erhalte ich dann in der folgenden Zeile die Fehlermeldung: "Laufzeitfehler 1004 - Anwendungs- oder objektdefinierter Fehler".

LetzteZeile = Cells(Rows.Count, Spalten(s)).End(xlUp).Row

Grüße Peter
AW: TextBox Werte in Array einlesen
18.01.2018 15:59:21
Daniel
Hi
1. mit der SPLIT-Funktion bekommst du Texte.
Auch wenn die Teiltexte nur aus Ziffern bestehen, sind es Texte und keine Zahlen.
2. wenn du bei Cells als 2. Parameter (Spalte) einen Text eingibst, so interpretiert VBA das als Spaltenbuchstaben und eine Spalte mit dem Spaltenbuchstaben "1" gibt es nicht.
Dein Code würde laufen, wenn du statt der Spaltennummer den Spaltenbuchstaben eingibst ("A,B,C").
wenn du Spaltennummern eingibst ("1,2,3"), müsstest du diese erst in Zahlen wandeln:
LetzteZeile = Cells(Rows.count, CLng(Spalten(s))).End(xlup).Row
mit folgendem Code kannst du beides verwenden, auch gemischt ("A,2,C,4")
LetzteZeile = Cells(Rows.count, IIF(IsNumeric(Spalten(s)),CLng(Spalten(s)),Spalten(s))).End(xlup).Row
Gruß Daniel
Anzeige
AW: TextBox Werte in Array einlesen
19.01.2018 14:28:13
Peter
Hallo Daniel,
danke für deinen Tipp. Der Code läuft bei angabe der Spaltenbuchstaben sauber durch. Ich möchte gerne die Version mit beiden Varianten (Nummern und Buchstaben) verwenden. Allerdings erhalte ich bei der Codezeile

.Value = CDbl(.Value)
einen Fehler.
Grüße Peter
AW: TextBox Werte in Array einlesen
19.01.2018 16:59:46
Daniel
Hi
dann solltest du mal prüfen, ob du die Spalten auch richtig angegeben hast.
der Fehler dritt auf, wenn in der angesprochenen Zelle ein Text steht oder ("" ist auch ein Text)
außerdem, warum arbeitest du so umständlich?
die Schleife über die Zeilen kannst du dir sparen.
gib einfach der ganzen Spalte die gleiche Formatierung, auch in den leeren Zellen.
mit DATEN - DATENTOOLS - TEXT IN SPALTEN kannst du die Umwandlung von Text in Zahl für den ganzen Zellbereich einer Spalte in einem Schritt machen.
einfach ausführen und die Einstellungen so wählen, dass keine neuen Spalten entstehen.
für die Umsetzung im Makro einfach mal den Recorder mit laufen lassen.
Beachte dass du Zahlenformat (Komma als Dezimalzeichen) und Datumsformat explizit angeben musst.
machst du keine Vorgaben, werden im Makro die amerikanischen Formate verwendet.
Gruß Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige