Выбранная строка в списке копируется в другой список - PullRequest
2 голосов
/ 11 марта 2020

У меня есть список в пользовательской форме с несколькими строками отфильтрованных данных. Я хотел бы иметь возможность выбрать одну из строк и отобразить ее в другом списке (только значения в этой выбранной строке, но не остальные)

Мой текущий код просто:

Private Sub SelectHousingList_Click()
HousingList.Text = SelectHousingList.Selected(Row)
End Sub

С 'HousingList', являющимся списком, в который я хотел бы переместить значения.

И 'SelectHousingList', являющимся строками отфильтрованных данных.

Ранее в этом коде I Для выбора из списка значений используется код, подобный этому (но не с целой строкой значений).

Private Sub MaterialList_Click()
SelectedMaterialText.Value = MaterialList.Text
Worksheets("FSC PSC PFC").Range("D4").Value = SelectedMaterialText.Value
End Sub

Вторая строка кода позволяет скопировать выбранный элемент в списке в текстовое поле.

Если вам понадобится больше моего кода, я могу предоставить его вам.

Это может быть простой вопрос, но я не могу найти ответ где-нибудь или выяснить код, который позволяет этому случиться.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Если я понимаю ваши требования, это должно сделать то, что вам нужно для одного столбца:

Private Sub SelectHousingList_Click()
   HousingList.AddItem SelectHousingList.Value
End Sub

Если есть 2 столбца, то это:

Private Sub SelectHousingList_Click()
   HousingList.AddItem SelectHousingList.List(SelectHousingList.ListIndex)
   HousingList.List(HousingList.ListCount - 1, 1) = SelectHousingList.List(SelectHousingList.ListIndex, 1)
End Sub

Вы будете необходимо добавить дополнительные строки для каждого столбца, превышающего 2, изменяя индекс для каждого.

0 голосов
/ 11 марта 2020

Этот код извлекает в массив (или строку) все значения столбцов в выбранной строке. Он заполняет второй список тем количеством столбцов, которое есть в первом:

Private Sub SelectHousingList_Click()
  Dim arrRow() As Variant, i As Long
  ReDim arrRow(Me.SelectHousingList.ColumnCount)
  For i = 0 To SelectHousingList.ColumnCount
    arrRow(i) = Me.SelectHousingList.List(i, Me.SelectHousingList.ListIndex)
  Next i
  Debug.Print Join(arrRow, ", ")
   With Me.HousingList
     .ColumnCount = Me.SelectHousingList.ColumnCount
     .AddItem arrRow(0)
      For i = 1 To UBound(arrRow)
          .List(.ListCount - 1, i) = arrRow(i)
      Next i
  End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...