powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблема с WorksheetFunction.Match
12 сообщений из 12, страница 1 из 1
проблема с WorksheetFunction.Match
    #38416268
sigizmind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
заметил тут проблемку с 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
проблема с WorksheetFunction.Match
    #38416270
sigizmind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно как-то сделать, чтобы верхний код работал?
...
Рейтинг: 0 / 0
проблема с WorksheetFunction.Match
    #38416496
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sigizmind,

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


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

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

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

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

А если попробовать поиск сделать через Find? По идее должно получиться быстро.
С find не получилось у меня, да и вроде find для текста больше. Но если можете такое с find реализовать, то буду благодарен за пример
...
Рейтинг: 0 / 0
проблема с WorksheetFunction.Match
    #38418566
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
...
Рейтинг: 0 / 0
проблема с WorksheetFunction.Match
    #38418567
Maxim12345678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблема с WorksheetFunction.Match
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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