Назначение определенной ячейки из диапазона переменной VBA - PullRequest
0 голосов
/ 29 ноября 2018

Есть ли способ сохранить определенные ячейки в новые переменные из диапазона в VBA?Я имею в виду ...

Предположим, я установил нижеприведенные данные для вызова диапазона "числа".

enter image description here

Сейчасв VBA для каждой строки я хочу извлечь каждое отдельное значение ячейки и назначить каждое значение другой переменной.И затем повторите еще раз для следующего ряда.

По сути, я хочу использовать значения в данной строке, чтобы что-то сделать, а затем повторить это снова для следующей строки.

Имеет ли это смысл ???

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

Public Sub try()
    Dim rng As Range
    Dim row As Range
    Dim cell As Range
    Dim n As Double

    Set rng = Range("numbers")

    For Each row In rng.Rows

        For Each cell In row.Cells

              n = cell.value

        Next cell

    Next row
End Sub

Ответы [ 2 ]

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

Попробуйте это:

Dim numberArray As Variant
' this line will assign numbers inside the range to an array
numberArray = Range("numbers").Value2
' now you are able to access all numbers in you range through this array, like this:
MsgBox numberArray(1, 1) 'it will show 1

То, как вы делаете это сейчас, не имеет смысла, поскольку вы присваиваете все значения одной переменной n, поэтому на каждой итерации цикла предыдущийзначение перезаписывается, в результате n имеет последнее значение в диапазоне, равное 3.

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

Есть ли какая-то особая причина, по которой вы хотите сохранить какое-либо значение ячейки в новой переменной?С заданным диапазоном было бы очень просто сохранить ваши значения в массиве Variant.В вашем примере это будет что-то вроде:

Public Sub try()

    Dim rng As Range
    Dim dataArray as Variant

    Set rng = Range("numbers")
    dataArray = rng

    debug.print dataArray(1, 2) 'This would print 7 in your example range

end sub

Затем вы можете легко перебрать свой Variant Array следующим образом:

Dim i as Long, j as Long

For i = 1 To UBound(dataArray, 1) 'This will loop through each row
    For j = 1 To UBound(dataArray, 2) 'This will loop through each column (cell in your row)
        Debug.Print dataArray(i, j)
    Next
Next

UBound() возвращает длину массива вданное измерение в качестве второго параметра.Я просто снова печатаю значения, так как не знаю, что именно вы хотите.

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