Auswahlliste - nur jede zweite Spalte gewünscht

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Auswahlliste - nur jede zweite Spalte gewünscht
von: Rainer
Geschrieben am: 02.10.2015 12:48:59

Hallo,
habe eine Userform, welche bislang eine Auswahl brachte, wenn in jeder Spalte entsprechende Informationen standen.
Nun habe ich die Auswertung je Produkt auf zwei Spalten erweitert und bekomme leider nicht das gewünschte Ergebnis, wenn ich die Listfunktion benutze.
Klicke ich das erste Produkt klappt es noch.
Wähle ich das zweite oder mehrere an, klappt es nicht korrekt.

Dim iLst As Integer
   
  For iLst = 0 To lstProdukte.ListCount - 1
    If lstProdukte.Selected(iLst) Then
       Columns(iLst + 13).Hidden = False
       Columns(iLst + 14).Hidden = False
     End If
     iLst = iLst
  Next iLst
  Fusszeile
  Unload Me

Das erste auszuwählende Produkt hat Spalte M+N, das zweite O+P u.s.w..
Die bis dato abgeänderte Tabelle: https://www.herber.de/bbs/user/100551.xls
Gruß Rainer

Bild

Betrifft: Wenn jede zweite Spalte, dann x2
von: Daniel
Geschrieben am: 02.10.2015 12:57:20
Hi
wenn immer zwei Spalten zu einem Listeneintrag gehören, dann musst du iLst mit 2 multiplizeren um auf den dazugehörenden Spaltenwert zu kommen:

 Columns(13 + 2 * iLst).Hidden = False
 Columns(14 + 2 * iLst).Hidden = False
und da ich zusammenhängende Zellbereiche gerne im Block bearbeite, kann man hier eine Zeile sparen:
 Columns(13 + 2 * iLst).Resize(, 2).Hidden = False
Gruß Daniel

Bild

Betrifft: AW: Wenn jede zweite Spalte, dann x2
von: Rainer
Geschrieben am: 02.10.2015 13:34:48
Hallo Daniel,
einwandfrei, Danke
Rainer

Bild

Betrifft: AW: Wenn jede zweite Spalte, dann x2
von: Rainer
Geschrieben am: 02.10.2015 14:53:41
Hallo,
muss nochmal auf meine geänderte Tabelle zurückkommen, da ich die Initialisierung in der zweiten Auswahlbox (frmTOP) auch nicht geändert bekomme.

   Dim iRow As Integer, iColL As Integer, iMax As Integer, iCol As Integer
   iColL = GetLastColumn()
   iMax = WorksheetFunction.Match("Auswertung", Columns(3), 0)
   Columns("IV").ClearContents
   
   Range(Cells(1, 7), Cells(1, iColL)).EntireColumn.Hidden = True
   
   Range(Cells(iMax, 7), Cells(iMax, iColL)).Copy
   Range("IV1").PasteSpecial xlPasteValues, , , True
   Range("IV1").CurrentRegion.Sort key1:=Range("IV1"), order1:=xlDescending, Header:=xlNo
   
   For iRow = 1 To WorksheetFunction.CountA(Columns("IV"))
      If Cells(iRow, 256).Value <> 0 Then
         If WorksheetFunction.CountIf(Range(Cells(WorksheetFunction.CountA(Columns(256)), 256),  _
Cells(iRow, 256)), Cells(iRow, 256).Value) < 2 Then
            If Cells(iRow, 256).Value = 1 Then
               lstTop.AddItem "1 Punkt"
            Else
               lstTop.AddItem Cells(iRow, 256).Value & " Punkte"
            End If
         End If
      End If
   Next iRow
   
   Columns("IV").ClearContents

Im Einzelschritt wird bereits

   iMax = WorksheetFunction.Match("Auswertung", Columns(3), 0)
reklamiert.
Im Namensmanager habe ich bereits die Zuordnung von "Auswertung" auf I11 vorgenommen.
Gruß Rainer

Bild

Betrifft: AW: Wenn jede zweite Spalte, dann x2
von: Daniel
Geschrieben am: 02.10.2015 15:17:31
Hi
hier suchst du in der Spalte C nach dem Text "Auswertung"

iMax = WorksheetFunction.Match("Auswertung", Columns(3), 0)

wenn du nach dem Text suchen willst, welcher in der Zelle steht, die mit dem Namen "Auswertung" verknüpft ist, dann so
iMax = WorksheetFunction.Match(Range("Auswertung"), Columns(3), 0)
Gruß Daniel

Bild

Betrifft: AW: Wenn jede zweite Spalte, dann x2
von: Rainer
Geschrieben am: 02.10.2015 15:28:54
Hallo Daniel,
danke für die schnelle Antwort; muss nun leider weg aber mit Deiner Erläuterung sollte ich nun klarkommen.
Gruß Rainer

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Auswahlliste - nur jede zweite Spalte gewünscht"