Я пытаюсь создать массив со значением из ActiveSheet (VBA) - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь создать массив со значениями из непустых ячеек в диапазоне B6: B183.array_articles = ActiveWorsheet.Range("B6:B183") возвращает пустой массив, поэтому я пытаюсь сделать это:

Sub set_price()
Dim articul_price() As String
Dim articul_bill As String
Dim counter As Integer
Dim array_articles() As Variant
Dim array_unsorted() As String
Dim cell As Range
counter = 0
ReDim articul_price(0)
For Each cell In ActiveWorsheet.Range("B6:B183") ' error 424 Object required
    If IsEmpty(cell.Value) Then
        array_unsorted(counter) = cell.Value
        ReDim Preserve array_unsorted(counter)
    Else
    'do nothing
    counter = counter + 1
    End If
Next
End Sub

Этот код возвращает

ошибка 424 Требуется объект

In Locals

1 Ответ

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

Чтобы легко загрузить диапазон в массив (без цикла), используйте:

Dim array_unsorted As Variant 'must be variant!
array_unsorted = ThisWorkbook.Worksheets("NameOfSheet").Range("B6:B183").Value '2-dimensional array

, вы можете получить доступ к массиву с помощью

Debug.Print array_unsorted(row, column) 'yes it has only 1 column but it is still there
Debug.Print array_unsorted(1, 1) 'first value
Debug.Print array_unsorted(2, 1) 'second value

или транспонировать его, чтобы сделать его 1-мерный

array_unsorted = WorksheetFunction.Transpose(ThisWorkbook.Worksheets("NameOfSheet").Range("B6:B183").Value) '1-dimensional

и вы можете получить доступ к массиву с помощью

Debug.Print array_unsorted(i) 'this is 1-dimensional
Debug.Print array_unsorted(1) 'first value
Debug.Print array_unsorted(2) 'second value

Обратите внимание, что функция транспонирования имеет ограничение в 65 536 строк.Если вы превысите их, остальное будет обрезано молча.

Я рекомендую избегать ActiveWorksheet (если вы не пишете надстройку или код не используется для нескольких листов).Используйте ThisWorkbook.Worksheets("NameOfSheet"), чтобы ссылаться на лист по его имени, что более удобно, и в Excel не будет ошибок.

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