HERBERS Excel-Forum - das Archiv
Datum in Listenfeld auswählen
Andre´

Hallo alle zusammen,
ich möchte durch eine Listenfeld erreichen, dass ein Anfangsdatum und ein Enddatum ausgewählt werden kann.
Das Anfangsdatum soll in die Zelle A1 und das Enddatum in die Zelle A2 zurück gegeben werden.
Hierzu soll aus einer TXT Datei
hier ein Bsp: https://www.herber.de/bbs/user/54278.txt
alle Datumsangaben (immer die ersten 10 Zeichen einer Zeile) in das Listenfeld zur Auswahl stehen.
Die TXT Datei befindet sich unter C:\Datum.txt
In der TXT Datei kann es vorkommen, dass das Datum mehrmals vorkommt. Es soll aber nur einmalig in dem Listenfeld zur Auswahl erscheinen.
Hat jemand eine Idee wie ich das realisieren kann.
Bin für jeden Tipp sehr dankbar!
MFG Andre

AW: Datum in Listenfeld auswählen
Ramses

Hallo
Und was soll mit dem Rest der Daten passieren ?
Es macht ja wohl keinen Sinn für eine Datumsangabe ein solch kompliziertes Procedere zu veranstalten
Gruss Rainer

AW: Datum in Listenfeld auswählen
Tino

Hallo,
habe hier mal etwas zusammengebastelt, kannst Du damit etwas anfangen?


Option Explicit
Dim sLine() As String
Sub txt_ReadLine()
Dim sFilename As String
Dim F As Integer
Dim strTemp As String
Dim lngZ As Long
sFilename = "C:\Datum.txt"
lngZ = 0
'Hier wird die Dimension mittels Schleife ermittelt
If Dir$(sFilename) <> "" Then
F = FreeFile
Open sFilename For Input As #F
While Not EOF(F)
Line Input #F, strTemp
lngZ = lngZ + 1
Wend
Close #F
ReDim sLine(0 To lngZ) 'Dimension Festlegen
lngZ = 0
'Textdatei in eien Area einlesen
Open sFilename For Input As #F
While Not EOF(F)
Line Input #F, sLine(lngZ)
sLine(lngZ) = Left$(sLine(lngZ), 10)
lngZ = lngZ + 1
Wend
Close #F
End If
'Doppelte Einträge in Area entfernen
Call DeleteDoppelt
'alte Daten löschen
Tabelle1.ListBox1.Clear
'Neue Daten in Listbox schreiben
For lngZ = 0 To UBound(sLine) - 1
Tabelle1.ListBox1.AddItem sLine(lngZ)
Next lngZ
End Sub
Sub DeleteDoppelt()
Dim col As New Collection
Dim iCounter As Long
On Error Resume Next
For iCounter = 0 To UBound(sLine) - 1
col.Add sLine(iCounter), CStr(sLine(iCounter))
Next iCounter
On Error GoTo 0
ReDim sLine(0 To col.Count - 1) 'Neu Dimensionieren
For iCounter = 0 To col.Count - 1
sLine(iCounter) = col(iCounter + 1)
Next iCounter
End Sub


Gruß Tino

www.VBA-Excel.de


AW: Datum in Listenfeld auswählen
Andre´

Hallo Reiner und Tino,
erstmals Danke für die Antworten.
Rainer,die Daten sollen in das Sheets(2) mit folgenden Code eingetragen werden:


Sub TextEinlesen()
Dim iFree As Integer, strText As String, arrTmp, arrDaten()
Dim lngCounter As Long, lngStart As Long, lngEnde As Long
ReDim arrDaten(1 To 4, 1 To 1)
iFree = FreeFile
lngStart = Range("A1") * 1
lngEnde = Range("A2") * 1
Open Range("A3") For Input As iFree
Do While Not EOF(iFree)
Line Input #iFree, strText
arrTmp = Split(strText, ";")
Select Case arrTmp(0) * 1
Case Is >= lngStart, Is <= lngEnde
lngCounter = lngCounter + 1
ReDim Preserve arrDaten(1 To 4, 1 To lngCounter)
arrDaten(1, lngCounter) = arrTmp(0) * 1
arrDaten(2, lngCounter) = arrTmp(1) * 1
arrDaten(3, lngCounter) = arrTmp(2)
arrDaten(4, lngCounter) = arrTmp(3) * 1
End Select
Loop
Close iFree
Sheets(2).Range("a1").Resize(lngCounter, 4) = WorksheetFunction.Transpose(arrDaten)
End Sub


Tino, hast Du vielleicht eine Bsp.xls
Ich hoffe, das Ihr mir weiter helfen könnt.
MFG Andre

AW: Datum in Listenfeld auswählen
Ramses

Hallo
Sorry,... aber warum fragst du nicht denjenigen der dir den Code geschrieben hat, den Code entsprechend anzupassen.
Gruss Rainer

AW: Datum in Listenfeld auswählen
Andre´

Hallo,
den Code habe ich von Rudi Maintaire der Beitrag war aber ein anderer siehe
https://www.herber.de/forum/archiv/984to988/t986101.htm
und der Aufbau der TXT Datei ist auch anders als in dem jetzigen Thread.
Ich bin der Meinung, dass alle Forumsmitglieder einbezogen werden sollen und nicht einzelne Personen angesprochen werden sollen von den man mal Hilfestellung erhalten hat.
Ich habe mal den Code von Tino eingearbeitet wobei ich
Tabelle1.ListBox1.Clear zu UserForm1.ListBox1.Clear und
Tabelle1.ListBox1.AddItem sLine(lngZ) zu UserForm1.ListBox1.AddItem sLine(lngZ)
abgeändert habe.
Hier die Datei: https://www.herber.de/bbs/user/54298.xls
Beim einlesen des Datums wird allerdings nicht der 18.06.2008 mit angezeigt.
Was muss jetzt im Code geändert/ eingefügt werden, damit beim anklicken eines Datums im Listenfeld dies in die Zelle A1 und in die Zelle A2 übergeben wird.
Ich stelle mir es so vor, dass beim Anfangsdatum/ Enddatum ein Text erscheint: Geben Sie ein Anfangsdatum ein
nach der Auswahl dann: Geben Sie ein Enddatum ein wobei das Enddatum gleich oder größer des Anfangsdatum sein sollte.
Mit dem einlesen der Daten in das Sheets(2) würde ich das dann schon selber kombinieren.
Wäre sehr Dankbar wenn mir jemand helfen könnte.
MFG Andre

AW: Datum in Listenfeld auswählen
Tino

Hallo,
habe den Code nochmal Korrigiert und an die UserForm_Activate angepasst
https://www.herber.de/bbs/user/54299.xls
Gruß Tino

www.VBA-Excel.de


AW: Datum in Listenfeld auswählen
Andre´

Hallo Tino,
jetzt wird alles eingelesen Danke!
Wie kann ich aber nun die Werte in die Zellen übergeben?
Wie bereits beschrieben:


Was muss jetzt im Code geändert/ eingefügt werden, damit beim anklicken eines Datums im  _
Listenfeld dies in die Zelle A1 und in die Zelle A2 übergeben wird.
Ich stelle mir es so vor, dass beim Anfangsdatum/ Enddatum ein Text erscheint: Geben Sie ein  _
Anfangsdatum ein
nach der Auswahl dann: Geben Sie ein Enddatum ein wobei das Enddatum gleich oder größer des Anfangsdatum sein sollte.


Kannst Du mit bitte diesbezüglich weiter helfen.
Vielen Dank im Voraus!
MFG Andre

AW: Datum in Listenfeld auswählen
Tino

Hallo,
ich würde dies über zwei ComboBoxen machen
Eine mit Datum Anfang und eine mit Datum Ende.
https://www.herber.de/bbs/user/54301.xls
Gruß Tino

AW: Datum in Listenfeld auswählen
Andre´

Hallo Tino,
Danke für den Tipp.
Ich habe noch
UserForm1.ListBox1.Clear
zu
UserForm1.ComboBox1.Clear
UserForm1.ComboBox2.Clear
abgeändert, obwohl Clear vielleicht gar nicht notwendig sein wird Oder?
Ich lasse den Thread mal offen. Durch die ComboBox kann man eben auch andere Dinge direkt eingeben und die Prüfung ob das Enddatum gleich oder größer ist sollte noch erledigt werden.
MFG Andre

AW: Datum in Listenfeld auswählen
Tino

Hallo,
meinst du so?
https://www.herber.de/bbs/user/54314.xls
Gruß Tino

AW: Datum in Listenfeld auswählen
Andre´

Hallo Tino,
konnte mich leider erst jetzt melden.
Der Lösungsansatz ist gut, wenn ich aber jetzt etwas anderes in ComboBox eingebe
kommt Laufzeitfehler 13 Typen unverträglich durch das CDate.....
Hast Du noch eine Idee, wie man nur die vorgegebenen Werte benutzen kann und keine anderen Eingaben in den ComboBoxen tätigen kann.
MFG Andre

AW: Datum in Listenfeld auswählen
Andre´

Hallo Tino,
habe soeben mein Problem gelöst.
Ich habe Deinen letzten Tipp in die ListBoxen eingearbeitet und übergebe die Auswahl über


Private Sub ListBox1_Click()
End Sub


Nochmals vielen Dank für die ganzen Lösungsansätze.
MFG Andre

AW: Datum in Listenfeld auswählen
Tino

Hallo,
du brauchst doch nur eine Tabelle mit einer ListBox1 und einem Button,
dem Button weist du dass Makro „txt_ReadLine“ zu.
Du solltest nach dem drücken auf den Button, in deiner Listbox die gefilterten Daten deiner Textdatei bekommen ohne doppelte Einträge.
Gruß Tino

www.VBA-Excel.de