Установите диапазон от целевой ячейки до xlDown, пока длина значения ячейки в столбце не станет больше 3 символов и, наконец, смещение столбца (-1, 0) для диапазона - PullRequest
0 голосов
/ 22 сентября 2019

enter image description here Я определил пару диапазонов, но у меня проблемы с определением нового диапазона с несколькими условиями.Я пытаюсь установить новый диапазон от целевой ячейки вниз, пока длина первой ИСТИННОЙ ячейки не станет больше 3 символов.Новый желаемый диапазон будет "Range (" C "& Target.Row &": "& Range (" C65536 "). End (xlDown) .Address (0, 0))", но только для тех ячеек, которые имеют3 или менее символов.Проблема с этим кодом заключается в том, что он останавливается на первой непустой ячейке.Последняя ячейка в диапазоне будет последней ячейкой с максимум 3 символами (и не пустыми) до того, как значение ячейки будет иметь более 3 символов.

Например, новый диапазон будет C35: C47, который затем будетприменяется для соседних ячеек как B35: B47.Позже в моем коде я бы затем использовал этот новый диапазон (B35: B47) в цикле «for» для определения новых значений для этих соседних ячеек.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim r As Range
Dim rng As Range, cell As Range

Set rng = Range("B" & Target.Row & ":" & Range("B65536").End(xlUp).Address(0, 0))
Set r = Target

If Target.Column = 3 And Selection.Column = 3 Then

    If Intersect(Range("C:C"), r) Is Nothing Then Exit Sub
    If r.Value = "" Then Exit Sub
    If r.Offset(0, 1).Value <> "" Then Exit Sub
    If r.Offset(0, -1).Value <> "" Then Exit Sub
    Application.EnableEvents = False
    r.Offset(0, -1) = Application.WorksheetFunction.Max(Range("Sheet1!B7:B" & r.Row))
    For Each cell In rng
        If IsNumeric(cell.Value) Then
            If cell.Value <> "" Then
                cell.Value = cell.Value + 1
            End If
        Else
            MsgBox "Cell " & cell.Address(0, 0) & " does not have a number"
            Exit Sub
        End If
    Next
Application.EnableEvents = True
End If
End Sub

Новый диапазон будет использоваться ваналогично «for-loop» в примере с той разницей, что «rng» будет новым диапазоном -> «Для каждой ячейки в rng2» ...

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