Имя переменной в команде, изменяемой в каждом цикле - PullRequest
0 голосов
/ 07 мая 2020

У меня есть команда, которая устанавливает значение переменной в Do до l oop, и я хочу, чтобы эта команда каждый раз ссылалась на другую переменную (например, «datapoint1» в первом l oop, «datapoint2» в второй, эт c.). Я попытался использовать «За» l oop вместо «До тех пор, пока», но это создает проблему, поскольку время выполнения l oop сильно колеблется («До тех пор, пока» l oop входит в состав большего «За» л oop).

Итак, мой вопрос: есть ли способ заставить эту единственную командную строку ссылаться на разные переменные в каждом l oop?

У меня есть образец моего кода ниже для справки. Заранее благодарим всех за помощь.

 Dim datapoint(0 to 15) As Integer

        Do Until hello = 1
        rw = False
        h = h + 1 'I have tried to use this variable to count the number of each loop.
        name = ActiveCell.Offset(0, -8).Text
        level = ActiveCell.Offset(0, -4).Text
        If InStr(name, fullname) > 0 Then 'Checks if the line contains data for a specific name
            If level = "High" Then: datapoint(h) = ActiveCell.Value ' This creates an error
            Set r = ActiveCell
            Do Until rw = True
            Set r = r.Offset(1, 0)
            If r.EntireRow.Hidden = False Then
                r.Select
                rw = True
            End If
            Loop

        Else

            hello = 1
        End If

1 Ответ

0 голосов
/ 07 мая 2020

Обратите внимание, что datapoint определен только для 0 To 15, поэтому, если ваш h равен >15, он выдаст ошибку «Переполнение». В случае ошибки проверьте значение h. Также ваша точка данных имеет тип Integer, поэтому максимальное значение может быть 32767.

Если вы попытаетесь записать большие значения из ActiveCell.Value, то тоже получите переполнение. Так что также проверьте значение в ActiveCell.Value в случае ошибки.

Если вы используете значения, превышающие это, вы должны использовать другой тип:

Dim datapoint(0 to 15) As Long    'for bigger integer values
Dim datapoint(0 to 15) As Double  'for decimal values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...