VBA Створити матрицю з декількох заголовків ListBox, що містять


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 досить низький).

Я щось пропускаю?

Відповіді:


0

тут багато питань:

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

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

'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)

Дякую за Вашу відповідь, але все ще є речі, які я не розумію: 1. Як мені повторно задати Matrix_a, якщо я не знаю точно, скільки стовпців буде обрано? 4. Чи щось змінює? Оскільки я - це число, я хочу вибрати i-й стовпчик із Price.
Джек

@Jack додав для відповіді приклади dim'ing масиву. Щодо "... вибору i-го стовпця з Price ...", як ви плануєте вибирати стовпці в ListBox? Пам'ятайте, що Selectedйдеться про рядки
chris neilsen

Дякую за ваші доповнення, я фактично роблю це так і, здається, працює: 'nRow = UBound (Ціна) nCol = 0 Для i = 0 Для ListBox1.ListCount - 1 якщо ListBox1.Selected (i) Тоді nCol = nCol + 1 Кінець Якщо Next i ReDim Matrix_a (nRow, nCol) nCol = 0 Для i = 0 Для СписокBox1.ListCount - 1 Якщо ListBox1.Selected (i) Тоді nCol = nCol + 1 Для r = 1 Для nRow Matrix_a (r, nCol ) = Ціна (r, i) Далі r Кінець If Next i '. Дякую за все! редагувати: Як зробити правильний формат коду?
Джек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.