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

ListView FullRowSelect funktioniert nur bedingt

ListView FullRowSelect funktioniert nur bedingt
24.05.2008 18:07:00
Thomas
Hallo,
bei der Umstellung einiger ListBoxen ins ListView's habe ich folgende Entdeckung gemacht:
Auch wenn in den Eigenschaftenseiten aus 'Allgemein' der Punkt FullRowSelect gewählt wurde funktioniert dieser nicht, wenn die Ausrichtung einer Spalte auf rechtsbündig gesetzt ist.
Dann sieht das Ganze so aus:
Userbild
Beholfen habe ich mir bisher immer so:
If Cells(Zeile, Spalte) "" Then
.ListItems(lsvZeile).SubItems(5) = Cells(Zeile, Spalte)
Else
.ListItems(lsvZeile).SubItems(5) = " "
End If
Und das Spalte für Spalte. :-( Aber muß das denn so sein?
Setzte ich die Ausrichtung auf mittig, habe ich einen druchgehenden Balken, was bei Zahlen natürlich besch...eiden aussieht.
Gruß Thomas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListView FullRowSelect funktioniert nur bedingt
24.05.2008 18:44:00
Herbert
Hi,
nicht nachvollziehbar.
Welche Version der MS Common Controls mit welchem SP?
mfg Herbert

AW: ListView FullRowSelect funktioniert nur bedingt
24.05.2008 19:20:00
Thomas
Hallo Herbert,
Microsoft ListView Control 6.0 [SP4]
Gruß Thomas

AW: ListView FullRowSelect funktioniert nur bedingt
24.05.2008 20:31:00
Herbert
Hi,
[SP6] ist die aktuelle und, in dieser Beziehung, fehlerfreie Version.
mfg Herbert

AW: ListView FullRowSelect funktioniert nur bedingt
24.05.2008 22:11:00
Thomas
Hallo Herbert,
mir ist eingefallen, daß mein Code nicht ganz vollständig war, er muß heißen:
.ListItems(lsvZeile).SubItems(5) = Format(Cells(Zeile, Spalte), "#,##0.00")
Kann es sein, daß es dann Probleme gibt, wenn versucht wird "nichts" nach #,##0.00 formatiert, rechtsbündig in die ListView einzutragen und dann mittels FullRowSelect dartzustellen?
Komplett wäre der Code so:
.ListItems.Add , , Left(Cells(Zeile, 1).Text, 6)
.ListItems(lsvZeile).SubItems(1) = Format(Cells(Zeile, 2), "d")
.ListItems(lsvZeile).SubItems(2) = Cells(Zeile, 3)
.ListItems(lsvZeile).SubItems(3) = Cells(Zeile, 4)
.ListItems(lsvZeile).SubItems(4) = Format(Cells(Zeile, 17), "#0.00")
.ListItems(lsvZeile).SubItems(5) = Format(Cells(Zeile, 36), "#,##0.00")
.ListItems(lsvZeile).SubItems(6) = Format(Cells(Zeile, 40), "dd.mm.yyyy")
.ListItems(lsvZeile).SubItems(7) = Format(Cells(Zeile, 41), "dd.mm.yyyy")
.ListItems(lsvZeile).SubItems(8) = Cells(Zeile, 42)
wobei es so aussieht, wie in dem pic meiner ursprünglichen Frage dargestellt.
Die leeren Spalten danach, werden wie Du siehst, blau unterlegt.
Gruß Thomas

Anzeige
AW: ListView FullRowSelect funktioniert nur bedingt
25.05.2008 18:47:00
Herbert
Hi,
lad mal Beispiel hoch.
mfg Herbert

AW: ListView FullRowSelect funktioniert nur bedingt
26.05.2008 00:24:01
Herbert
Hi,

Private Sub Tabelle_einlesen()
Dim Dummy
Dim lsvZeile As Integer
Dim Zeile As Integer
Dim Spalte As Integer
Dim Summe As Double
Dim ZeileE As Integer
ZeileE = Cells.Find("*", _
searchdirection:=xlPrevious).Row         ' End-Zeile der gesamten Tabelle
Summe = 0
Zeile = DatenZeile1
ListView1.ListItems.Clear
Label1.Caption = "0,00"                      'Monatssumme auf 0 setzen
Mo = Format(Cells(10, 3), "00")              'aktuellen Monat als Ziffer
While Mid(Cells(Zeile, 1).Text, 3, 2)  Mo  'erste Zeile aktueller Monats suchen
Zeile = Zeile + 1
If Zeile > ZeileE Then                   'd.h. noch keine Daten für diesen Monat
Exit Sub
End If
Wend
lsvZeile = 1
With ListView1
While (Mid(Cells(Zeile, 1).Text, 3, 2) = Mo)
Dummy = ""
If Cells(Zeile, 6).Text = "" Then
Dummy = " "
Else
Dummy = Cells(Zeile, 6).Text
End If
.ListItems.Add , , Left(Cells(Zeile, 1).Text, 6)                              '  _
JaMoNr
.ListItems(lsvZeile).SubItems(1) = Format(Cells(Zeile, 2), "d")          ' Tag
.ListItems(lsvZeile).SubItems(2) = Cells(Zeile, 3).Text                       '  _
KdNr/LiNr
.ListItems(lsvZeile).SubItems(3) = Cells(Zeile, 4).Text                       '  _
Name
.ListItems(lsvZeile).SubItems(4) = Cells(Zeile, 5).Text
.ListItems(lsvZeile).SubItems(5) = Dummy                ' Betrag
.ListItems(lsvZeile).SubItems(6) = Cells(Zeile, 7).Text ' fällig am
.ListItems(lsvZeile).SubItems(7) = Cells(Zeile, 8).Text ' bezahlt am
.ListItems(lsvZeile).SubItems(8) = Cells(Zeile, 9).Text                       ' Art  _
- Bank
Summe = Summe + Cells(Zeile, 6)                                               '  _
Beträge addieren
lsvZeile = lsvZeile + 1
Zeile = Zeile + 1
Wend
End With
Label1 = Format(Summe, "#,##0.00")             ' Summe unter ListView eintragen
Call lvw_SetColor(ListView1, &HC0&, 8, 0)      ' Spalte "bezahlt am" rot färben
Call lvw_SetColor(ListView1, &HC0&, 9, 0)      ' Spalte "Art-Bank" rot färben
ListView1.SetFocus
End Sub


mfg Herbert

Anzeige
AW: ListView FullRowSelect funktioniert nur bedingt
26.05.2008 13:34:45
Thomas
Hallo Herbert,
dankeschön für Deine Lösung.
Wie würdest Du die Sache lösen, wenn es nicht nur eine Spalte gäbe sondern mehrere?
In anderen Tabellen habe ich nämlich auch diesen Fall. Immer Zahl, immer etweder rechtsbündig, oder leer.
If Cells(Zeile, 3).Text = "" Then
Dummy1 = " "
Else
Dummy1 = Cells(Zeile, 3).Text
End If
If Cells(Zeile, 4).Text = "" Then
Dummy2
Else
Dummy2 = Cells(Zeile, 4).Text
End If
usw?
Und dann noch die Frage, ob denn niemand vor mir dieses Problem hatte?
Eine Auszeichnung auf die ich gar keinen Wert legen würde.
Viele Grüße
Thomas

Anzeige
AW: ListView FullRowSelect funktioniert nur bedingt
26.05.2008 16:41:25
Herbert
Hi,
beleg zunächst mal am Anfang deiner While-Wend-Konstruktion, ebenfalls in einer
Schleife, alle Zellen mit einem " " (blank) vor.
mfg Herbert

AW: ListView FullRowSelect funktioniert nur bedingt
26.05.2008 17:12:00
Thomas
Hallo Herbert,
stimmt, so kann man es machen.
Und generell was meinst Du, ist das nun eine Schwachstelle von ListView?
Viele Grüße
Thomas

AW: ListView FullRowSelect funktioniert nur bedingt
26.05.2008 19:26:24
Thomas
Hallo Herbert,
soeben habe ich Deinen Vorschlag ausprobiert:
"beleg zunächst mal am Anfang deiner While-Wend-Konstruktion, ebenfalls in einer
Schleife, alle Zellen mit einem " " (blank) vor."

Funktioniert aber nicht, denn wenn ich das voran setze und hinterher mit den "richtigen" Daten komme, wird natürlich in den Fällen wo keine Daten vorhanden sind das " " wieder durch nichts ersetzt.
Muß ich also doch für alle Spalten:
If Cells(Zeile, Spalte) "" Then
.ListItems(lsvZeile).SubItems(1) = Cells(Zeile, Spalte)
Else
.ListItems(lsvZeile).SubItems(1) = " "
End If
verwenden?
Gruß Thomas
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige