Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найти диапазон ячеек с числами из заданного / 4 сообщений из 4, страница 1 из 1
27.04.2009, 15:52
    #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
27.04.2009, 18:20
    #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
29.04.2009, 18:12
    #35961757
Krasnaja Shapka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти диапазон ячеек с числами из заданного
в общем, кому интересно таки обошелся без перебора всех ячеек, через
Код: plaintext
myRange.Find("*", .Cells( 1 ), xlValues, , xlByRows, xlPrevious)
все решил.
вместо 1 строки как хотел, получилось еще больше чем мой первый нерабочий вариант :)
но, блин почему specialcells не пашет - не понимаю...
...
Рейтинг: 0 / 0
30.04.2009, 08:46
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Найти диапазон ячеек с числами из заданного / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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