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

an ivan: Listbox formatieren

an ivan: Listbox formatieren
17.01.2003 10:33:40
ünther Hauptmann
antwort zu beitrag von ivan vom 15.01.2003:

hi ivan,
verzeih meine späte antwort, ich bin nur gelegentlich im forum

hier der code, der bei mir unter office 97 funktioniert. ich glaube, die boundcolumn-eigenschaft war der fehler:

Private Sub UserForm_Initialize()
Dim I As Integer
I = ActiveSheet.UsedRange.Rows.Count
With ListBox3
.ColumnHeads = False
.ColumnWidths = "6cm;2cm;6cm"
.ColumnCount = 3
.RowSource = "c1:e1500"
.ControlSource = "i6"
.BoundColumn = 0
End With

With UserForm1.ListBox5
.ColumnCount = 3
.ColumnHeads = False
.ColumnWidths = "6cm;5cm;1cm"

End With
End Sub


gruss günther




6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: an ivan: Listbox formatieren
17.01.2003 14:48:45
ivan
hi günther
was heist verzeih mir??
ich bin dir sehr dankbahr wenn du dir überhaupt zeit nimmst!
ABER DU HAST MEIN PROBLEM LEIDER FALSCH VERSTANDEN!!

die spalten sind untereinander. nur möchte ich jeder spalte eine
andere formatierung zuweisen!!

SPALTE C Rechtsbündig
SPALTE D Zentriert
SPALTE E LINKSBÜNDIG
weil die listbox3 ja die formatierung nicht aus der tabelle übernimmt.
vieleicht hast du noch etwas für mich .
danke !!!
WEBMASTER IVAN



Re: an ivan: Listbox formatieren
20.01.2003 09:33:57
guenther
hi ivan

mir ist doch noch eine lösung eingefallen, sie muss nur noch zu deinem problem passen. probier’s mal damit (eine kombination der hier geposteten meldungen):

Dim xlTab As Worksheet
Dim xlrange As Range
Dim zelle As Range
Dim i As Integer

Private Sub UserForm_Initialize()
Dim txt(1500, 3) ' txt(Zeilen, Spalten) entspricht Bereich "C1:E1500"

With ListBox3
.Font.Name = "Courier"
.Font.Size = 10
.ColumnHeads = False
.ColumnCount = 3
.ColumnWidths = "6cm;2cm;6cm"
.BoundColumn = 0
End With

Set xlTab = Sheets("Daten") ' "Daten" = Name des Tabellenblattes
With xlTab
.Activate
.Columns("C:C").Select
End With
Set xlrange = Selection
Set zelle = xlrange.Cells(1, 1) ' 1.Zeile in Spalte C auswählen

Do While Not IsEmpty(zelle)
With zelle
txt(i, 0) = Format(zelle.Value, "@@@@@@@@@@@@@@@@@@@@@@@@@@@")
txt(i, 1) = Format(zelle.Offset(0, 1), "@@@@@")
txt(i, 2) = zelle.Offset(0, 2)
With ListBox3
.List() = txt
End With
End With
Set zelle = zelle.Offset(1, 0) ' nächste Zeile in Spalte C auswählen
i = i + 1
Loop

End Sub

funktioniert mit schriftart courier (standard) und fixedsys(standard), leider nicht mit tt-schriften

das range-objekt markiert in der spalte c die erste zelle (c1)
in der do...while schleife werden nacheinander c1, d1, e1 eingelesen und dem datenfeld txt zugeordnet und zwar solange bis eine leere zelle in der spalte c entdeckt wird. bei der deklarierung des datenfeldes txt musst du mindestens die zeilenanzahl (kann auch mehr sein) eingeben --- Dim txt(zeilenanzahl, spaltenanzahl)
gleichzeitig wird die ausgabe in der listbox wie folgt formatiert:

1. Eintrag rechtsbündig. bei spaltenbreite 6cm sind in schriftgrösse 10 "nur“ 27 zeichen sichtbar, daher: Format(zellinhalt, " 27mal das zeichen @ für vorlaufblanks")
2. Eintrag zentriert: bei spaltenbreite 2 cm sind in schriftgrösse 10 "nur" 9 zeichen sichtbar, mit "@@@@@" wird das letzte zeichen des zellinhaltes ungefähr zentriert ausgegeben. mit einer if...then anweisung wären verschiedene formate für verschieden zeichenlängen darstellbar
3. Eintrag soll linksbündig sein, daher brauchst nix formatieren

nachteil1: da jede zelle im datenbereich z.b. c1:e1500(=4500 zellen) eingelesen und formatiert in der listbox ausgegeben wird dauert das seine zeit (bei meiner alten 166er-rumpel etwa 10sekunden für 100 zeilen (=300 zellen).
nachteil 2: die do...while schleife endet bei der ersten leeren zelle in spalte c, wenn dies ohnehin die letzte datenreihe ist dann o.k.

einfach mal ausprobieren, zuerst mit nur wenigen datenreihen!

günther



Anzeige
Re: an ivan: Listbox formatieren
21.01.2003 14:22:33
ivan
hi
danke für deine mühe sieht gut aus der code nur ich konnte ihn noch nicht testen.bekomme fehlermeldung

Set xlTab = Sheets("Tabelle1")
ich glaube da liegt der fehler was sgst du???
ivan

Re: an ivan: Listbox formatieren
21.01.2003 17:02:30
günther
hey ivan,

nice to read you

also der name des Tabellenblattes steht in der Anweisung set xltab = sheets (" ... hier ....") und kann kein fehler sein, soferne du eine Tabelle1 in der Mappe hast, auf er die daten sind

ich vermute eher folgendes:

die ersten vier Dim-Deklarationen gehören in den Allgemeinen Teil damit sie im ganzen Modul gültig sind

war's das vielleicht?

gruß aus wien

günther

Anzeige
Re: an ivan: Listbox formatieren
21.01.2003 22:21:19
ivan
hi danke aber
ich erhalte die fehlermeldung
laufzeitfehler 70
zugriff verweigert

so habe ich die prozedur in userform1 drinnen und nur tabelle1 reingeschrieben.

Private Sub UserForm_Initialize()
Dim xlTab As Worksheet
Dim xlrange As Range
Dim zelle As Range
Dim i As Integer


Dim txt(1500, 3) ' txt(Zeilen, Spalten) entspricht Bereich "C1:E1500"

With ListBox3
.Font.Name = "Courier"
.Font.Size = 10
.ColumnHeads = False
.ColumnCount = 3
.ColumnWidths = "6cm;2cm;6cm"
.BoundColumn = 0
End With

Set xlTab = Sheets("Tabelle1") ' "Daten" = Name des Tabellenblattes
With xlTab
.Activate
.Columns("C:C").Select
End With
Set xlrange = Selection
Set zelle = xlrange.Cells(1, 1) ' 1.Zeile in Spalte C auswählen

Do While Not IsEmpty(zelle)
With zelle
txt(i, 0) = Format(zelle.Value, "@@@@@@@@@@@@@@@@@@@@@@@@@@@")
txt(i, 1) = Format(zelle.Offset(0, 1), "@@@@@")
txt(i, 2) = zelle.Offset(0, 2)
With ListBox3
.List() = txt
End With
End With
Set zelle = zelle.Offset(1, 0) ' nächste Zeile in Spalte C auswählen
i = i + 1
Loop

End Sub

ivan

Anzeige
Re: an ivan: Listbox formatieren
22.01.2003 03:05:43
ivan
hi
danke für deine hilfe
aber laufzeitrfehler 70!!!
habe das problem anders gelöst !
3 listbostboxen da kann ich jetzt bequem links mitte rechts machen.
grüße aus wien 22
ivan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige