Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
656to660
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
656to660
656to660
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Listbox füllen mit Array

Listbox füllen mit Array
24.08.2005 16:17:35
Sylvio
Hallo Forum,
ich hab ein Array fertig gefüllt. es besteht aus
4 spalten und 50 Zeilen. Dieses lass ich nach einen Bestimmten Wert in der 1 Spalte durchsuchen.
Wenn er diesen findet soll er mir bitte aber alle Werte der Spalten dieser Arrayzeile sozusagen in eine Listbox nebeneinander schreiben.
Ich bekomm es echt nicht hin. Hoffe es ist verständlich was ich meine.
Gruß Sylvio

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

Betreff
Datum
Anwender
Anzeige
Das funzt soweit aber?
24.08.2005 16:58:12
Sylvio
Hallo MichaV,
danke erstmal das du mir mal wieder aus der Patsche hilfst. Aber nach einem ganzen Tag vba vor dem Rechner muss man ja irgendwann nicht mehr durchsehen.
das ganze funzt soweit so gut.
Jetzt hab ich allerdings die länge der strings ermittelt die da reingeschrieben werden sollen. Wenn ich nun .ColumnWidths = meine stringlänge mache geht das nicht da die angabe in pt. ist wie kann ich das trotzdem umgehen?
Gruß Sylvio
Anzeige
AW: Das funzt soweit aber?
24.08.2005 20:08:56
MichaV
Hallo Sylvio,
da die ListBox keine AutoFit- Methode hat ist das ein Problem. Ich denke, es gibt mindestens diese 2 Möglichkeiten:
1. Du kennst die Breite eines Zeichens. Das geht nur mit einer Nichtproportionierten Schriftart (also eine, bei der das i genauso viel Platz braucht wie das o, z.B. Courier), du müsstest noch ermitteln, wie breit ein einzelnes Zeichen ist.
2. Du kennst die Breite eines Zeichens nicht, weil Du eine "normale" proportionierte Schriftart verwendest. Dann ist "iiiii" viel kürzer als "LLLLL", obwohl beide 5 Zeichen haben. Dann könntest Du den String versteckt in eine Excel- Zelle schreiben, diese AutoFit-ten, die Breite der Zelle ermitteln und dann hast Du den Platz, den der String braucht. Habs aber selber nicht ausprobiert.
Weiß nicht, ob 2. auch ohne Excel, nur mit VB, geht.
Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Das funzt soweit aber?
25.08.2005 12:11:47
Sylvio
Hallo MichaV,
ich probier Variante 2 meld mich wenn ich was hab
gruß Sylvio
AW: Das funzt soweit aber?
25.08.2005 13:25:43
Sylvio
Hello again,
wie gesagt ich habs mit deiner Variante 2 versucht und hab folgendes zusammengeschustert.
Zuvor paar Erklärungen also ArtikelID ist ne Combobox
Anzeige ist ne Listbox
notmarketed() ist mein Feld
i und j sind Laufparameter
ich nehme also den Wert aus dem Feld und schreib ihn unten rechts Cells(65536, 256)
rein, guckt ja keiner hin da.
mache Autofit nehme amschließend den Breitenwert der Spalte
und rechne ihn anhand einer formel die ich im Netz gefunden habe um in cm.
.ColumnWidth + 0.71) / 5.1425
zum Glück kann mann ColumnWidths in cm angeben, da ich die umrechnung von Punkt in cm nicht weiß. Das Ganze ist nicht hundert prozent deshalb die Korekturfaktoren bei ColumnsWidths. Bei sehr großem Text, wie bei mir bei tmpSize2, wird die Spalte etwas zu
groß, da ich aber auch kurzen Text habe kann ich keinen Verkürzungsfaktor nehmen da sonst wieder Teile fehlen.
Dann noch das ganze von cm in Pixel + Korrekturfaktor
und fertig ist die gesamtbreite der Listbox .Width = tmpholesize

Private Sub ArtikelID_Change()
Dim tmpSize As Double
Dim tmpSize2 As Double
Dim tmpSize3 As Double
Dim tmpholesize As Double
Dim number
Anzeige.Clear
number = "7302471612" 'ArtikelID.Text
i = 0
Do While number <> notmarketed(0, i)
i = i + 1
Loop
With Anzeige
.ColumnCount = 3
.AddItem
Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).Value = notmarketed(0, i)
Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).Columns.AutoFit
tmpSize = (Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).ColumnWidth + 0.71) / 5.1425
Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).Value = notmarketed(1, i)
Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).Columns.AutoFit
tmpSize2 = (Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).ColumnWidth + 0.71) / 5.1425
Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).Value = notmarketed(2, i)
Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).Columns.AutoFit
tmpSize3 = (Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).ColumnWidth + 0.71) / 5.1425
Application.ActiveWorkbook.ActiveSheet.Cells(65536, 256).Clear
.ColumnWidths = tmpSize + 0.05 & " cm;" & tmpSize2 & " cm;" & tmpSize3 + 0.05 & " cm"
tmpholesize = (((tmpSize + 0.05 + tmpSize2 + tmpSize3 + 0.05) * 10) / 0.376) + 30
.Width = tmpholesize
.List(.ListCount - 1, 0) = notmarketed(0, i)
.List(.ListCount - 1, 1) = notmarketed(1, i)
.List(.ListCount - 1, 2) = notmarketed(2, i)
End With
End Sub

Ich bräuchte halt ne genau Umrechnung von Zellenbreite in cm
und für die Listbox von Punkt (pt) in cm da hätte ich es exakter
oder nochbesser der Wert im Feld also der String als Punkt (pt) für die Listbox
Wenn Du was darüber weißt immer her damit.
Gruß Sylvio
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige