Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
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
Inhaltsverzeichnis

ListView - Spaltenanzahl ?!

ListView - Spaltenanzahl ?!
kle
Hallo,
...habe eine Userform mit einem ListView-Steuerelement. (Siehe Musterdatei)
Ich möchte gern, dass diese Liste eine Kopfspalte trägt und "Nur" eine Spalte
angezeigt wird. Vor allem, bei mehrmaligem Klick - erscheinen immer mehr... ;o(
https://www.herber.de/bbs/user/69622.xls
Hier eine verkürzte Musterdatei - Klick auf Button löst das einlesen der Daten aus.
Bei Wiederholtem Klick, fügt es leider immer weiter Spaltenköpfe hinzu...will ich aber
nicht !
Ziel: Nur eine Listviewspalte - Punkt !
Wo habe ich noch den Fehler im Code ? Kann mir jemand helfen ?!?
Habe im Archiv so einiges gefunden, aber leider noch nicht die Lösung für mein
Problem.
Vielen Dank für Eure schnelle Hilfe !
Gruß
Kay
AW: ListView - Spaltenanzahl ?!
17.05.2010 21:53:18
kle
OK, habe eine Zeile vergessen - was hilft um nicht noch mehr Spaltenüberschriften zu haben.
LVWG.ColumnHeaders.Clear
vor der With-Anweisung mit dem schreiben der Headers...
Aber das Problem, dass 2 Spalten (eine mit "WG" die andere ohne Überschrift) bleibt leider...
Wer kann helfen ?!
Gruß
Kay
AW: ListView - Spaltenanzahl ?!
17.05.2010 22:20:42
Josef

Hallo Kay,
mach die Spalte einfach so breit wie das ListView.
".ColumnHeaders(1).Width = .Width - 4", wobei das -4 vom Zoomfaktor und der Schriftgröße abhängt.

Gruß Sepp

Anzeige
AW: ListView - Spaltenanzahl ?!
17.05.2010 21:56:22
Josef

Hallo Kay,
mit ".ColumnHeaders.Add" fügst du ja jedesmal einen Spaltenköpf hinzu.
Setze davor ".ColumnHeaders.Clear", dann sollte es passen.

Gruß Sepp

AW: ListView - Spaltenanzahl ?!
17.05.2010 22:31:34
kle
Hallo Sepp,
...vielen Dank. Habe die Spaltenbreite nun entsprechend angepasst und solange man nicht ein doppelklick auf den rechten Rand des spaltenkopfes macht - passt alles, wenn doch, gut - dann passt sich halt die Spaltenbreite wieder der Spaltenwerte an... aber damit kann ich immernoch leben.
Das mit dem .clear hatte ich schon gemacht. Danke !
Gruß
Kay
Anzeige
NEU: ListView - doppelte Einträge verhindern !
17.05.2010 22:33:48
kle
Hallo - ich nochmal,
Wollte kein neuen Beitrag schreiben, da hier ja auch noch die Musterdatei dran hängt.
Kann mir jemand helfen ? Wie kann ich es verhindern, dass Einträge mehrfach auftauchen ?
Siehe Musterdatei "Warengruppe1" z.B. !
Vielen Dank !
Gruß
Kay
AW: NEU: ListView - doppelte Einträge verhindern !
17.05.2010 22:50:27
Josef

Hallo Kay,
da gibt's viele Wege.

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub CommandButton1_Click()
  Testebene "Ursprung"
End Sub


Private Sub Testebene(Optional varFilter As Variant = 0)
  Dim lngIndex As Long
  Dim arrTmp As Variant, meArray As Variant
  Dim objDic As Object
  
  Set objDic = CreateObject("Scripting.Dictionary")
  
  meArray = Sheets("DB").UsedRange
  
  With LVWG
    .ColumnHeaders.Clear
    .ListItems.Clear
    .ColumnHeaders.Add 1, , "WG"
    .ColumnHeaders(1).Width = .Width - 4
    .View = lvwReport
    
    For lngIndex = 2 To UBound(meArray, 1)
      If (varFilter) = 0 Or CStr(meArray(lngIndex, 4)) = (varFilter) Then
        objDic(meArray(lngIndex, 5)) = 0
      End If
    Next
    
    arrTmp = objDic.keys
    
    For lngIndex = 0 To UBound(arrTmp)
      .ListItems.Add lngIndex + 1, , arrTmp(lngIndex)
    Next
  End With
  
  Set objDic = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Danke, geht es auch mit 2 Spalten ?
17.05.2010 23:03:54
kle
Vielen Dank Sepp,
..darf ich noch 2 Fragen stellen - in der Hoffnung auf Antwort ?! ;o)
1) was genau ist dieses objDic ? Habe es nicht in meinen Büchern gefunden ?
2) Wie kann ich dieses verwenden, wenn ich 2 Spalten ( 5 & 6) einlesen möchte in die Listview ?!
Vielen Dank und Gruß
Kay
AW: Danke, geht es auch mit 2 Spalten ?
17.05.2010 23:21:31
Josef

Hallo Kay,
zum "Scripting.Dictionary" siehe http://tinyurl.com/24tvt63
Wenn due Spalte 5+6 in einer Spalte des Listviews willst, dann so.

Private Sub Testebene(Optional varFilter As Variant = 0)
  Dim lngIndex As Long
  Dim arrTmp As Variant, meArray As Variant
  Dim objDic As Object
  
  Set objDic = CreateObject("Scripting.Dictionary")
  
  meArray = Sheets("DB").UsedRange
  
  With LVWG
    .ColumnHeaders.Clear
    .ListItems.Clear
    .ColumnHeaders.Add 1, , "WG"
    .ColumnHeaders(1).Width = .Width - 4
    .View = lvwReport
    For lngIndex = 2 To UBound(meArray, 1)
      If (varFilter) = 0 Or CStr(meArray(lngIndex, 4)) = (varFilter) Then
        objDic(meArray(lngIndex, 5) & " - " & meArray(lngIndex, 6)) = 0
      End If
    Next
    
    arrTmp = objDic.keys
    
    For lngIndex = 0 To UBound(arrTmp)
      .ListItems.Add lngIndex + 1, , arrTmp(lngIndex)
    Next
  End With
  
  Set objDic = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Danke, geht es auch mit 2 Spalten ?
17.05.2010 23:32:20
kle
Danke für den Link, und - sorry, wohl falsch ausgedrückt.
Meinte natürlich - 2 Spalten mit 2 Überschriften...
Nicht eine "Verkettung" von 2 Teilen...
Gruß und Danke Kay
AW: Danke, geht es auch mit 2 Spalten ?
18.05.2010 00:03:42
Josef

Hallo Kay,
dann wird es natürlich unschlüssig in Bezug auf die Doppelten!

Private Sub Testebene(Optional varFilter As Variant = 0)
  Dim lngIndex As Long
  Dim arrTmp As Variant, meArray As Variant
  Dim objDic As Object
  
  Set objDic = CreateObject("Scripting.Dictionary")
  
  meArray = Sheets("DB").UsedRange
  
  With LVWG
    .ColumnHeaders.Clear
    .ListItems.Clear
    .ColumnHeaders.Add 1, , "WG"
    .ColumnHeaders.Add 2, , "WGB"
    .ColumnHeaders(1).Width = .Width / 2 - 2
    .ColumnHeaders(2).Width = .Width / 2 - 2
    .View = lvwReport
    For lngIndex = 2 To UBound(meArray, 1)
      If (varFilter) = 0 Or CStr(meArray(lngIndex, 4)) = (varFilter) Then
        objDic(meArray(lngIndex, 5) & ";" & meArray(lngIndex, 6)) = 0
      End If
    Next
    
    arrTmp = objDic.keys
    
    For lngIndex = 0 To UBound(arrTmp)
      .ListItems.Add lngIndex + 1, , Split(arrTmp(lngIndex), ";")(0)
      .ListItems(lngIndex + 1).ListSubItems.Add 1, , Split(arrTmp(lngIndex), ";")(1)
    Next
  End With
  
  Set objDic = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Danke - Klappt perfekt !!! ;o)
18.05.2010 00:26:14
kle
Hallo Sepp,
...vielen Dank, dass Du auch nicht schlafen kannst und mir so enorm hilfst !
Es klappt wunderbar...
mehrere Spalten, ohne Dopplungen !
Genau wie ich es mir vorgestellt hatte. Vielen Lieben Dank und ein "Bier" für Dich !
Gruß
Kay

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige