Динамический массив не принимает изменение размеров в 1x2 (работает 2x2 и 2x1) - PullRequest
0 голосов
/ 01 октября 2019

Для работы я работаю с массивами, в которых я храню цены на запчасти. Идея состоит в том, что у меня есть массив с разными номерами деталей, закодированными в несколько цифр, я захожу в книгу Excel, где хранятся все детали и их цены, и ищу эти коды по одному. Как только код найден, я просто делаю «смещение», чтобы получить цену в евро и в долларах, и заполняю другой массив этими ценами.

Моя проблема в том, что когда массив с номерами деталей получает только одинномер детали, я не могу «переопределить» массив как массив 1x2 ...

См. комментарии в следующем коде (да, я решил начать массивы с 1, а не с 0,в этом случае это намного удобнее)

Dim ToolPrices() As String
ReDim ToolPrices(1 To UBound(ToolTab()), 1 To UBound(ToolTab()))     'Normally, if "ToolTab()" is a 1x1 array, TooLPrices should be a 1x2 array... But no, it's a 1x1

[Later on in the code]

Tempo = ActiveCell.Offset(0, 2)                           'gets the euro price

' the variable PositionPoint is the pointer for the "for" loop passing through all the arrays
If PositionPoint > UBound(ToolPrices(), 1) Then           'for avoiding to reduce the size of the Array and loosing data
   ReDim Preserve ToolPrices(1 To 2, 1 To PositionPoint)
End If

ToolPrices(1, PositionPoint) = Tempo
Tempo = ActiveCell.Offset(0, 5)                           'gets the dollard price

If PositionPoint > UBound(ToolPrices(), 2) Then           'for avoiding to reduce the size of the Array and loosing data
   ReDim Preserve ToolPrices(1 To 2, 1 To PositionPoint)
End If

ToolPrices(2, PositionPoint) = Tempo       'In case of a 1x1 array with the parts numbers, this bugs as it is a 1x1 array in which I try to put something in the second line

Я долго безуспешно искал ...

Я думаю, у ReDim ToolPrices(1 To UBound(ToolTab()), 1 To UBound(ToolTab())) возникла проблема ... ИЛИIf PositionPoint > UBound(ToolPrices(), 2) Then ReDim Preserve ToolPrices(1 To 2, 1 To PositionPoint) End If, к которому нет доступа как UBound(ToolPrices(), 2) = 1, когда я ожидал бы 0, или "Пусто", или "", или ошибку, или что-либо, кроме 1, поскольку второго измерения не существует ...

Заранее благодарим за помощь!

1 Ответ

0 голосов
/ 01 октября 2019

Хорошо, думаю, я понял, спасибо за это:

https://www.excel -easy.com / vba / array.html

Итак, сначала выопределить количество строк, затем количество столбцов до 60 столбцов

Я должен повторить все: '(

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