Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблема с WorksheetFunction.Match / 12 сообщений из 12, страница 1 из 1
04.10.2013, 06:16
    #38416268
sigizmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
заметил тут проблемку с Match
код
i=Cells(1,10)
R = Range(Cells(3, 3), Cells(i, 3))
myVar = Application.WorksheetFunction.Match(125.5, R, -1)

Если i=3 то выскакивает ошибка 1004
Если i=4 и больше, то все работает ок. Типа если в диапазоне 1 значение, то работать не хочет... странно.
Но если написать так:
myVar = Application.WorksheetFunction.Match(125.5, Range(Cells(3, 3), Cells(3, 3)), -1)
то ошибка не выскакивает...
Но у меня R используется в нескольких местах, поэтому удобнее с ним было бы, можно как-то сделать, чтобы верхни
...
Рейтинг: 0 / 0
04.10.2013, 06:23
    #38416270
sigizmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
можно как-то сделать, чтобы верхний код работал?
...
Рейтинг: 0 / 0
04.10.2013, 11:10
    #38416496
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
sigizmind,

Вы переменной i назначаете значение, записанное в ячейке.
Чему равно значение ячейки Cells(1,10) на момент присвоения значения i?
Скорее всего на этот момент там либо пусто или нуль, либо отрицательное число.
...
Рейтинг: 0 / 0
04.10.2013, 11:11
    #38416498
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
Забыл. Если хотите присвоить переменной значение объекта(а Range это объект), то надо перед присвоением добавлять ключевой оператор Set:
Код: vbnet
1.
Set R = Range(Cells(3, 3), Cells(i, 3))
...
Рейтинг: 0 / 0
04.10.2013, 13:02
    #38416718
sigizmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
The_PristЗабыл. Если хотите присвоить переменной значение объекта(а Range это объект), то надо перед присвоением добавлять ключевой оператор Set:
Код: vbnet
1.
Set R = Range(Cells(3, 3), Cells(i, 3))


верно! так все работает как надо. спасибо!
...
Рейтинг: 0 / 0
04.10.2013, 13:31
    #38416790
sigizmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
Еще такой вопрос, можно ли сделать, чтобы поиск был в обратном направлении? т.е. не с 3 по i ячейку, а с i по 3...
Заранее спасибо!
...
Рейтинг: 0 / 0
04.10.2013, 13:41
    #38416812
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
sigizmind,

Можно попробовать циклом в обратном направлении с шагом -1 или использовать Do While.
...
Рейтинг: 0 / 0
04.10.2013, 13:57
    #38416840
sigizmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
Maxim12345678sigizmind,

Можно попробовать циклом в обратном направлении с шагом -1 или использовать Do While.
это понятно, но это очень долго будет. надо, чтобы именно направление поиска задать другое или диапазон перевернуть снизу вверх...
...
Рейтинг: 0 / 0
04.10.2013, 14:19
    #38416873
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
sigizmind,

А если попробовать поиск сделать через Find? По идее должно получиться быстро.
...
Рейтинг: 0 / 0
05.10.2013, 08:39
    #38417576
sigizmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
Maxim12345678sigizmind,

А если попробовать поиск сделать через Find? По идее должно получиться быстро.
С find не получилось у меня, да и вроде find для текста больше. Но если можете такое с find реализовать, то буду благодарен за пример
...
Рейтинг: 0 / 0
07.10.2013, 10:40
    #38418566
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test()
Dim R As Range
Set R = Range("B3:B10").Find(What:="125.50", LookIn:=xlValues, _
    LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
If Not R Is Nothing Then
    MsgBox "Строка=" & R.Row
Else
    MsgBox "Не найдено"
End If
End Sub



В принципе, если встречается значение 1 раз, то можно сделать так. Вот полный код: http://www.cyberforum.ru/vba/thread322901.html
...
Рейтинг: 0 / 0
07.10.2013, 10:42
    #38418567
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с WorksheetFunction.Match
Maxim12345678
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test()
Dim R As Range
Set R = Range("B3:B10").Find(What:="125.50", LookIn:=xlValues, _
    LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
If Not R Is Nothing Then
    MsgBox "Строка=" & R.Row
Else
    MsgBox "Не найдено"
End If
End Sub



В принципе, если встречается значение 1 раз, то можно сделать так. Вот полный код: http://www.cyberforum.ru/vba/thread322901.html

Но, как я понял, это поиск текста, то есть, если в ячейках будут стоять числа с 1 или 3 цифрами после запятой, то он не найдет их...
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблема с WorksheetFunction.Match / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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