Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
876to880
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
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ListBox

ListBox
09.06.2007 11:05:08
Brunken
Hallo Forum,
ich habe eine Listbox mit dieser lese ich Daten aus Access ein (mehrspaltig)
diese Daten widerum schreibe ich ins Tabellenblatt zwecks weiterer Bearbeitung
Die ListBox bzw. Access TAB enthält Spalten mit Text und Zahlen auch Werte wie 0,6; 1,5; 11,0 etc.
diese Zahlen mit Komma lassen sich nicht mehr in der Tabelle berechnen oder addieren nur die Werte wie
22, 20, 11 usw.
Wer kann mir einen Rat oder eine Lösung dazu schreiben?
Gruß
Erich

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox
09.06.2007 11:08:44
Hajo_Zi
Hallo Erich,
hast Du Sie vielleicht als Text in die Tabelle geschrieben? Steuerelemente enthalten nur Text um Sie in die Tabelle als Zahl zu schreiben müssen Umwandlungsfunktionen benutzt werden z.b. Cdbl.

AW: ListBox
09.06.2007 16:21:00
Brunken
Zum besseren Verständnis, habe ich die Datei hochgeladen.
Wie bereits erwähnt lade ich die Daten aus einer Access.mdb in die ListBox ein, dann selektiere ich diese um Sie in das Tabellenblatt zu setzen.
Gruß
Erich

AW: ListBox
09.06.2007 17:02:41
Hajo_Zi
Hallo Erich,
ich sehe nicht die Datei. Aber im Code nachschauen ob Du Umwandlungsfunktionen benutzt hast kannst Du doch bestimmt auch selber. Du hast ja den Code erstellt. Woher Du die Daten bekommst ist erstmal unerheblich. Sie sind ja in Excel vorhanden.
Gruß Hajo

Anzeige
AW: ListBox
09.06.2007 17:05:12
Hajo_Zi
Hallo Erich,
es ist das was ich vermutet habe, jedenfalls bei dem Code den ich mir angesehen habe.
Gruß Hajo

AW: ListBox
09.06.2007 19:31:58
Brunken
Hallo Hajo,
könntest du mir den Code anpassen damit es funktioniert? kriege es irgendwie nicht hin
Gruß
Erich

AW: ListBox
09.06.2007 19:36:45
Hajo_Zi
Hallo Erich,
ich sehe es nicht als Problem an Deinen_Ausdruck umzuwandeln in cdbl(Dein_Ausdruck).
Das bekommst Du bestimm auch hin. Ich möchte mich jetzt nicht durch den Code arbeiten.
Gruß Hajo

Anzeige
AW: ListBox
10.06.2007 09:38:00
Brunken
Hallo Hajo,
das ist mein Code, mit dem ich die selektierten Daten der ListBox in die Tabelle schreibe.
welchen "Ausdruck" sprichst du an?
Dim index As Long, i As Long, j As Integer
With Worksheets("Daten_Leistung")
i = 2
For index = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(index) Then
For j = 0 To Me.ListBox1.ColumnCount - 1
.Cells(i, j + 2) = Me.ListBox1.List(index, j)
Next
i = i + 1
End If
Next
End With
Dim intEintrag As Integer
With UserForm1
If .ListBox1.ListIndex = -1 Then
MsgBox "Bitte einen Eintrag im Listenfeld markieren!"
Else
intEintrag = .ListBox1.ListIndex
Sheets("Formular").Range("C6").Value = .ListBox1.Column(0, intEintrag)
Gruß
Erich

Anzeige
AW: ListBox
10.06.2007 10:42:40
Hajo_Zi
Hallo Erich,
Du hast schon Ahnung wo Du was in die Zelle schreibst?
z.B.
Me.ListBox1.List(index, j)
Gruß Hajo

AW: ListBox
10.06.2007 11:20:43
Luschi
Hallo Erich,
wenn Du Daten aus Access in die Excel-Listbox schreibst, dann werden alle Daten
in der Listbox zu Text, auch wenn sie wie Zahlen aussehen.
Deshalb muß beim Schreiben der Daten aus der Listbox in die Tabellenzellen eine
Typ-Konvertierung in die numerischen Werte durchgeführt werden.
Hier ein Beispiel:

Dim index As Long, i As Long, j As Integer
With Worksheets("Daten_Leistung")
i = 2
For index = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(index) Then
For j = 0 To Me.ListBox1.ColumnCount - 1
Select Case j
Case 2, 4
'die 3. und 5. Spalte sind in der MDB-Datei Zahlen mit Komma _
oder Währung
.Cells(i, j + 2) = CDbl(Me.ListBox1.List(index, j))
Case 5
'die 6. Spalte in der MDB sind ganzzahlige Werte (Integer)
.Cells(i, j + 2) = CInt(Me.ListBox1.List(index, j))
Case Else
'alle übrigen Spalten sind Text
.Cells(i, j + 2) = Trim(Me.ListBox1.List(index, j))
End Select
Next
i = i + 1
End If
Next
End With

Für den Datenaustausch von Access zu Excel per ADODB habe ich folgendes dynamisches
Beispiel erstellt:
https://www.herber.de/forum/messages/876650.html
Hier wird die Select-Abfrage mit der Where-Bedingung nicht von Excel aus gestartet, sondern
in eine dummy-Abfrage der MDB-Datei geschrieben (per ADOX, einer Zusatzkomponente zu ADODB).
Von Excel aus wird dann nur noch die dummy-Abfrage aufgerufen "Select ... From dummyView".
Ziel ist es, die Datenmenge, die per ADODB von der MDB an Excel schickt werden, auf die gefilterten
Datensätze zu begrenzen und damit an Geschwindigkeit zu gewinnen.
Gruß von Luschi
aus klein - Paris

Anzeige
AW: ListBox
10.06.2007 19:53:00
Brunken
Hallo Luschi,
hat super funktioniert, sag mal wenn ich in Access eine Text Datei einlese habe ich das gleiche Problem
mit den Zahlen beim wiedereinlesen der textdatei in die Tabelle. In den Textfeldern der Formulare werden die Zahlen
falsch angezeigt aus 1,7 wird 0,9 usw.
Gruß
Erich

AW: ListBox
10.06.2007 21:43:52
Luschi
Hallo Erich,
da in Access die Felder festdefinierte Feldtypen haben, ist das Einlesen von Textdateien problematischer als in Excel; besonders dann, wenn die Felder in den Tabellen auch schon ein Datenformat besitzen.
Dazu kommt, daß die Zahlen im amerikanischen Format gespeichert sind: also als Kommastelle gilt der Punkt und das Komma selbst als Tausenderstelle.
Hier muß ganz bewußt mit Hilfe der Datentyp-Umwandlungsfunktionen gearbeitet werden, die Daten aus der Texttabelle korrekt in die MDB-Datei zu bekommen.
Daten aus Textdateien lesen ich in Excel und Access immer sequentiell mit Hilfe von:
Open "c:\textdatei.txt" For Input As #1
...
ein und nicht mit den eingebauten Möglichkeiten der 2 Programme.
So habe ich die Daten immer im Griff, kann Umlautkonvertierung, Datentypkonvertierung, Datumsformatierung
usw. durchführen und erst dann die Daten in die Tabellen schreiben.
Auch wenn der Aufwand etwas höher ist, aber die sequentielle Open-Methode ist wahnsinnig schnell.
Gruß von Luschi
aus klein-Paris
PS: Mich würde auch interessieren, ob Du an meinen erwähnten Beispiel Interesse hast es umzusetzen, denn ich brauche immer noch Erfahrunrungswerte, um wieviel schneller [oder auch nicht] diese Methode ist.

Anzeige
AW: ListBox
11.06.2007 06:14:00
Brunken
Guten morgen Luschi,
ja hätte intresse, es funktioniert tatsächlich um einiges schneller.
anbei hänge ich die Daten Tabelle ein wie ich sie in Access einlesen möchte
zuvor lösche ich die Access Tabelle bzw. die DS https://www.herber.de/bbs/user/43137.txt
mit diesem Code lese ich die Text Datei ein, aber eben mit Fehlerhaften Zahlen.

Sub Produktionszahlen_importieren()
On Error GoTo fehler
DoCmd.TransferText acImportDelim, , _
"Produktion_Nacharbeit", "C:\Schichtbuch_Anwendung\Elektronisches_Schichtbuch\Datenaustausch\ _
Produktionszahlen\Produktion_Nacharbeit.txt"
Exit Sub
fehler:
MsgBox Err.Number & vbTab & Err.Description
End Sub


Wenn ich dafür eine sichere und funktionierende Lösung bekomme, käme ich mit meiner Anwendung um einige Längen weiter. Danke für die Super Lösung "Umwandlung" klappt super.
Gruß
Erich aus Sachsen

Anzeige
AW: ListBox
11.06.2007 07:24:00
Luschi
Hallo Erich,
werde mir Dein Problem beim Einlesen der txt-Datei in Access heute Nachmittag mal ansehen. Zur Zeit nervt mein Chef...; das E-Mail-Konto ist voll mit Wünschen (eigentlich sind's ja Aufträge!).
Gruß von Luschi
aus klein-Paris

AW: ListBox
11.06.2007 19:34:42
Brunken
Super, und tausend Dank!
dein Chef nervt? geht mir nicht anders was machst du denn so den ganzen Tag "Programmieren"?
ich habe evtl. noch ein bis zwei Probleme wenn ich dich dazu um Hilfe bitten darf, melde dich.
PS was kann ich denn evtuell für deine Hilfe zurückgeben?
Gruß
Erich aus Sachsen

AW: ListBox
11.06.2007 23:52:00
Luschi
Hallo Erich,
habe mal Dein Access-Problem ein bischen behandelt. Es ist schon erstaunlich, daß Access beim Einlesen von txt-Dateien manchmal so danebenliegt.
Habe Deine Routine mal getestet. Bei einigen Kommazahlen-Spalten hat er bei mir Datumsfelder definiert.
Außerdem ist die txt-Datei nicht sauber geschrieben. Einige Zeilen haben hinten noch ein ";", was beinm reinen Access-Import dazu führt, das noch ein 43. Feld angelegt wird.
In den Zeilen 36 und 43 steht in der 11. Spalte kein Wert, obwohl in den anderen Zeilen dort ein ganzzahliger Wert steht; Access macht daraus einfach eine "0". Ich aschreibe hier den Wert -1, dann kann man solche fehlenden Werte besser herausfiltern.
https://www.herber.de/bbs/user/43158.zip
Solltest Du noch Fragen haben, dann melde Dich hier im Forum wieder!
Gruß von Luschi
aus klein-Paris

Anzeige
AW: ListBox
12.06.2007 20:12:00
Brunken
Hallo Luschi,
habe deinen Code ausprobiert und in meine Anwendung eingebunden. Spitze und verdammt schnell die Lösung, habe ich bezogen auf eine andere Textdatei angepasst dort ist es jetzt um einiges schneller.
Super!
Nun noch ein Problemchen, in Excel Diagramme s. Bsp. zu erstellen "mit 53 Wochen" ist kein Problem!
aber wie läßt sich das gleiche Diagramm in Access realisieren, wenn in der DB nur Werte Daten bis KW24
enthalten sind, dann sollen die Werte auch noch nach Kreterien abgefragt werden. Hast du eine Idee?
https://www.herber.de/bbs/user/43197.zip
ich habe es hiermit probiert, bringt mir aber nicht den gewünschten effekt.
TRANSFORM Sum(tabtest.F6) AS [Test01]
SELECT tabtest.F15 AS Ausdr1
FROM tabtest
WHERE (((Format([F3],"ww yy")) In ("1 07","2 07","3 07","4 07","5 07","6 07","7 07","8 07","9 07","10 07","11 07","12 07","13 07","14 07","15 07","16 07","17 07","18 07","19 07","20 07","21 07","22 07","23 07","24 07","25 07","26 07","27 07","28 07","29 07","30 07","31 07","32 07","33 07","34 07","35 07","36 07","37 07","38 07","39 07","40 07","41 07","42 07","43 07","44 07","45 07","46 07","47 07","48 07","49 07","50 07","51 07","52 07","53 07")) AND ((tabtest.F15)="Test"))
GROUP BY tabtest.F15
PIVOT Format(F3,"ww yy") In ("1 07","2 07","3 07","4 07","5 07","6 07","7 07","8 07","9 07","10 07","11 07","12 07","13 07","14 07","15 07","16 07","17 07","18 07","19 07","20 07","21 07","22 07","23 07","24 07","25 07","26 07","27 07","28 07","29 07","30 07","31 07","32 07","33 07","34 07","35 07","36 07","37 07","38 07","39 07","40 07","41 07","42 07","43 07","44 07","45 07","46 07","47 07","48 07","49 07","50 07","51 07","52 07","53 07");
da ja auch noch einige Daten fehlen, um das Diagramm Excel nachzubauen. Das Kriterium "Test"; "Test1"
möchte ich auswählen, dann die entsprechenden Daten (Werte dazu)
Gruß
Erich
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige