powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найти диапазон ячеек с числами из заданного
4 сообщений из 4, страница 1 из 1
Найти диапазон ячеек с числами из заданного
    #35956384
Krasnaja Shapka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть диапазон ячеек. надо выбрать диапазон непустых числовых ячеек (как константы так и формулы).
например, из диапазона "А1:E1" выбираем "B1,D1:E1"
____А____B____C____D____E____F
1________2________=12__111____

у меня получилось нечто такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Function NonBlancCells(r As Range) As Range
 Dim r1 As Range
 Dim r2 As Range

On Error Resume Next

    Set r1 = r.SpecialCells(xlCellTypeConstants, xlNumbers + xlLogical)
    Set r2 = r.SpecialCells(xlCellTypeFormulas, xlNumbers + xlLogical)
    Set NonBlancCells = r1
    
    If Err.Number >  0  Then
            Set NonBlancCells = r2
    Else
            Set NonBlancCells = Union(r1, r2)
    End If
End Function
Задача простая, но в одну строку ее решить не получается... может кто подскажет алгоритм попроще? а то мне почему-то казалось что все гораздо проще, но
Код: plaintext
r.SpecialCells(xlCellTypeConstants + xlCellTypeFormulas, xlNumbers + xlLogical)
не работает...
...
Рейтинг: 0 / 0
Найти диапазон ячеек с числами из заданного
    #35956890
Krasnaja Shapka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оказалось все еще печальнее...
при вызове функции с листа, SpecialCells - не работает вообще. хз почему.

т.е.
Код: plaintext
1.
2.
Function nnn(r As Range) As String
    nnn = r.SpecialCells(xlCellTypeConstants, xlNumbers + xlLogical).Address
End Function

выдает тот же диапазон, который вводишь, в любых случаях.

если же вызвать эту функцию вручную в какой-то процедуре, то все ок.
...
Рейтинг: 0 / 0
Найти диапазон ячеек с числами из заданного
    #35961757
Krasnaja Shapka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем, кому интересно таки обошелся без перебора всех ячеек, через
Код: plaintext
myRange.Find("*", .Cells( 1 ), xlValues, , xlByRows, xlPrevious)
все решил.
вместо 1 строки как хотел, получилось еще больше чем мой первый нерабочий вариант :)
но, блин почему specialcells не пашет - не понимаю...
...
Рейтинг: 0 / 0
Найти диапазон ячеек с числами из заданного
    #35962515
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Krasnaja Shapkaв общем, кому интересно таки обошелся без перебора всех ячеек, через
Код: plaintext
myRange.Find("*", .Cells( 1 ), xlValues, , xlByRows, xlPrevious)
все решил.
вместо 1 строки как хотел, получилось еще больше чем мой первый нерабочий вариант :)
но, блин почему specialcells не пашет - не понимаю...

Есть такой вариант, если не используешь условное форматирование

Код: plaintext
1.
2.
3.
4.
    ActiveSheet.UsedRange.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="1"
    Cells.SpecialCells(xlCellTypeBlanks).FormatConditions.Delete
    Set r = Cells.SpecialCells(xlCellTypeAllFormatConditions)
    r.FormatConditions.Delete
    Debug.Print r.Address
Но его конечно тоже не получится запустить из функции на листе, т.к. не возможно из ячейки вызвать операции изменяющие свойства ячеек.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найти диапазон ячеек с числами из заданного
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]