Как мне вызвать функцию на нескольких диапазонах - PullRequest
0 голосов
/ 24 мая 2019

У меня есть функция, которая форматирует диапазон, но кажется, что он форматирует только первый выбранный диапазон.

Я пытался сначала выбрать диапазон, а затем форматировать, но это немного удлиняет мой код.

Sub Numbers()

    Call format(Range(Cells(4, "A"), Cells(2 + i - j, "AA")))

    Call format(Range(Cells(4, "C"), Cells(4 + i - j, "F")))

    Call format(Range(Cells(4, "G"), Cells(4 + i - j, "J")))

End Sub

Sub format(R As Range)

    With R
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .weight = xlMedium
        End With

    End With

End Sub

Я хочу отформатировать все диапазоны, но его форматирование будет первым, т.е. только форматы -> Range(Cells(4, "A"), Cells(2 + i - j, "AA"))

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете либо выполнить циклическое переключение в своей основной подпрограмме и вызвать количество раз format sub x, либо изменить подпрограмму format для использования ParamArray. Это позволит вам передавать любое количество диапазонов на сабвуфер format в одной строке

Sub formatRange(ParamArray rngs() As Variant)
    Dim i As Long

    For i = 0 To UBound(rngs)
        If TypeName(rngs(i)) = "Range" Then
            With rngs(i)
                Debug.Print i, .Address, TypeName(rngs(i))

                .Borders(xlDiagonalDown).LineStyle = xlNone
                .Borders(xlDiagonalUp).LineStyle = xlNone
                With .Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .ColorIndex = 0
                    .TintAndShade = 0
                    .Weight = xlMedium
                End With
            End With
        End If
    Next i
End Sub

Sub test()
    formatRange Range("A1"), Range("A2"), Range("A3")
    formatRange Range("B5"), Range("I6")
    ' etc. etc....
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...