Удалить элемент из списка Excel - PullRequest
0 голосов
/ 30 ноября 2018

Мне нужно удалить элементы из списка, используя данные из диапазона при определенных условиях.Я не хочу удалять данные на рабочем листе, на котором основан список.

Вот выдержка из моего кода:

 Me.LstWSource.RowSource = ""

 If Len(rRange.Offset(1, 0).Formula) > 0 Then
    Set rRange = ThisWorkbook.Sheets(G_sNameReferenceS).Range(rRange.Offset(1, 0), rRange.End(xlDown))

 With Me.LstWSource
  .ColumnWidths = "28pt"
  .RowSource = rRange.Address
  .ListIndex = -1
  End With '>>>
End If

  '>>>>>>>>>>>>>>>>>>>>>>>>
  sRet = fG_SortingBasicS("lstYear", "DESC")
  '>>>>>>>>>>>>>>>>>>>>>>>>

  For i = Me.LstWSource.ListCount - 1 To 0 Step -1

   '>> current string condition to delete Item <<
   If Me.LstWSource.List(i) > CStr(Year(G_datJourTraitee)) Then
     Me.LstWSource.RemoveItem (i)
   End If
 Next i

Ошибка вызывается RemoveItem.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Для получения дополнительной информации и моего определенного решения, касающегося замедления заполнения: я использовал один раз чтение ячеек Range для заполнения динамического массива.Затем я использую этот массив для исключения или включения строк в другой второй массив.

Это строки, которые необходимо учитывать:

J = 1
For i = LBound(G_varListYears) To UBound(G_varListYears)

If G_varListYears(i) <= CStr(Year(G_datJourTraitee)) Then
  '>>>
  ReDim Preserve vListTMP(J)
  vListTMP(J) = G_varListYears(i)
  J = J + 1
  '>>
ElseIf (Me.chkNextYear = True) And ((Month(G_datJourTraitee) = 11 Or Month(G_datJourTraitee) = 12) And (G_varListYears(i) = CStr(Year(G_datJourTraitee) + 1))) Then
  '>>>
  ReDim Preserve vListTMP(J)
  vListTMP(J) = G_varListYears(i)
  J = J + 1
  '>>
Else
  '>>
End If

Next i

With Me.LstWSource
  .ColumnWidths = "28pt"
  .List = vListTMP()
  .ListIndex = -1
End With '>>>

Надеюсь, это тоже поможет.

0 голосов
/ 30 ноября 2018

Если вы используете .RowSource для заполнения списка, вы не можете удалить элементы списка из списка.

Поэтому вам необходимо заполнить список с помощью LstWSource.AddItem.Прокрутите свой диапазон и добавьте каждый элемент в свой список в соответствии с вашими критериями.Также см. Добавление элементов в список с несколькими столбцами .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...