VBA, ошибка переполнения, для каждого цикла не принимать вариант - PullRequest
0 голосов
/ 24 ноября 2018

Я пытался изменить мою переменную j с Range на Variant, но я получил ошибку переполнения.Если я изменяю на Integer или long, я получаю ошибку компиляции.

Dim j As Variant
Range("D83:D114").Select
    With Application.WorksheetFunction
    For Each j In Intersect(Selection, ActiveSheet.UsedRange)
        j.Value = .Trim(j.Value)
    Next j
    End With

Как сделать так, чтобы в моей переменной не было ошибки переполнения?Есть ли способ восстановить мою память?

Редактировать .

Я сделал корректировку, рекомендованную, убрав выделение из кода и введя диапазон.

Теперь overflow на моем следующем для каждого цикла.Все эти переменные используются несколько раз и сохраняются как Range.Как я могу не столкнуться с этими проблемами?

For Each cellAFS In AFS.Cells
    For Each cellFV In FVOCI.Cells
        If cellFV.Value = cellAFS.Value Then
            cellFV.Offset(0, 6).Value = cellAFS.Offset(0, 3).Value / 1000
        End If
    Next
Next

Ответы [ 2 ]

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

Ваш код работает для меня

Вы можете избежать выбора

Sub ChangeValue()
    Dim j As Range
    With Application.WorksheetFunction
        For Each j In Intersect(Range("D83:D114"), ActiveSheet.UsedRange)
            j.Value = .Trim(j.Value)
        Next j
    End With
End Sub

И проверить на пересечение пустот:

Sub ChangeValue()
    Dim rng As Range, j As Range
    Set rng = Intersect(Range("D83:D114"), ActiveSheet.UsedRange)
    If rng Is Nothing Then Exit Sub

    With Application.WorksheetFunction
        For Each j In rng
            j.Value = .Trim(j.Value)
        Next j
    End With
End Sub
0 голосов
/ 24 ноября 2018

Как насчет ниже подпункта

Sub ChangeValue()
Dim j As Range

    For Each j In Range("D83:D114")
        j = Trim(j.Value)
    Next j

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