1

У меня есть ListBox с именами некоторых столбцов, и я хотел бы построить матрицу только с выбранными столбцами. Есть ли простой способ сделать это?

Я на самом деле пытаюсь с:

Dim Matrix_a() As Variant
J = 0

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
       J = J + 1
       Matrix_a.Columns(J) = Price.Columns(i)
    End If
Next i

где "Цена" - это ранее определенный диапазон. это не работает из-за "неверного квалификатора", но я не вижу, как это обойти (мой уровень VBA довольно низкий).

Я что-то пропустил?

1 ответ1

0

много вопросов здесь:

  1. так как вы объявили Matrix_a как динамический массив, вам нужно измерить его перед использованием
  2. Вам не нужно .Columns на Matrix_a
  3. ListBox proerty является Column а не Columns
  4. свойство ListBox Selected применяется к строкам, а не к столбцам

Затемнение массива

'Declaration
Dim Matrix_a() As Variant

' Set a size
Redim Matrix_a(0 to 1, 0 to 1)

' Resize, keeping any existing data intact
Redim Preserve Matrix_a(0 to 1, 0 to 2)

' you can use variables
i = 3
Redim Preserve Matrix_a(0 to 1, 0 to i)

' Note: you can only change the last dimenstion with Preserve
' Having declared (0 to 1, 0 to 1), this won't work:
Redim Preserve Matrix_a(0 to 2, 0 to 1)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .