Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: GWolf от 11.09.2021, 20:24

Название: Количество колонок при выделении несвязанных ячеек
Отправлено: GWolf от 11.09.2021, 20:24
Доброго времени суток!

Выделены ячейки: C8; D11; E13; F15
Вопрос: Как на VBA получить количество колонок в блоке C8:F15

    Set nbr = Selection
    couCel = nbr.Cells.Count
    couCol = nbr.CurrentRegion.Columns.Count '- вот это не работает
Название: Re: Количество колонок при выделении несвязанных ячеек
Отправлено: Serge 007 от 13.09.2021, 15:02
Здраствуйте

Цитата: GWolf от 11.09.2021, 20:24Выделены ячейки: C8; D11; E13; F15
Вопрос: Как на VBA получить количество колонок в блоке C8:F15?
Sub Columns_Count()
    Dim rngC As Range
    Set rngC = Application.InputBox("Выделенные ячейки:", _
                                    "Считаем количество столбцов в выделенном диапазоне", Replace(Selection.Address, ",", ";"), Type:=8)
    MsgBox Intersect(rngC.EntireColumn, rngC.Parent.Rows(1)).Count
End Sub
Название: Re: Количество колонок при выделении несвязанных ячеек
Отправлено: GWolf от 20.09.2021, 19:34
Цитата: Serge 007 от 13.09.2021, 15:02
Здраствуйте ...
Доброго времени суток. Как всегда великолепно!
Если позволите - один вопрос: возможно ли данную Sub преобразовать в функцию, получающую на входе rng (Set rng = Selection) и возвращающей количество выделенных колонок. И не выдающую никаких сообщений?
Название: Re: Количество колонок при выделении несвязанных ячеек
Отправлено: GWolf от 20.09.2021, 19:40
Ага, нашел вот такое решение:
Sub wizow_Columns_Count()
    Dim rt As Range
    Set rt = Application.Selection
    nn = Columns_Count(rt)
    MsgBox nn
End Sub

Function Columns_Count(rt_)
'    'Выделены ячейки: C8; D11; E13; F15
'    'Вопрос: Как на VBA получить количество колонок в блоке C8:F15?
    Columns_Count = Intersect(rt_.EntireColumn, rt_.Parent.Rows(1)).Count
End Function

Правильно?