Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
 
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 311
Завершенные тесты: 1
#1

Find и Select - VBA

08.06.2017, 11:33. Просмотров 775. Ответов 40
Метки нет (Все метки)

Добрый день! Помогите, пожалуйста.
Когда-то использовала такую конструкцию
Visual Basic
1
Range("...").Find("...").Select
А сейчас почему-то не получается.
Visual Basic
1
2
Set C1 = Sheets.Item(1).Range("A1:A100")
Set C2 = C1.Find("№")
По идее в переменной C2 должен быть диапазон ячейки, содержащей №. А там значение ячейки, содержащей №. Поэтому к C2 не получается применить Select. Как выделить ячейку, содержащую № или как сразу получить ее строку и столбец?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2017, 11:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Find и Select (VBA):

Как оформить условие на попадание в диапазон в конструкции Select Case ... End Select? - VBA
Народ, подскажите please, правильна ли конструкция следующего кода: Sub пример() pp2 = Str(InputBox("введите число")) Select Case...

Ошибка в пользовательской форме "End Select without select case" - VBA
У меня был написан код, который хорошо работал.Я решил добавить пользовательскую форму (UserForm), через которую вводятся данные, после...

Select Without Select Case - VBA
Помогите кто-нибудь, пожалуйста! Написала такой вот код, но мне выдает ошибку "Select Without Select Case" на выделенной строчке....

Find Find - VBA
Здравствуйте, имею код: With ActiveDocument.Range.Find 'ищем текст '< в начале слова '{1;2} - одна или две...

Find в VBA - VBA
Помогите с помощью Find найти в каком из столбцов находиться число 4,начиная с F10

Find Wrap - VBA
свойство Wrap - поворачивать, заворачивать - определяет поведение поиска при достижении конца документа Вариантов значения свойства Wrap...

40
Hugo121
6182 / 2301 / 385
Регистрация: 19.10.2012
Сообщений: 6,840
08.06.2017, 14:23 #2
Нет, если set - то не может быть в переменной значение, в переменной будет объект.
0
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 311
Завершенные тесты: 1
08.06.2017, 14:28  [ТС] #3
Ну вот если смотреть в Watches. Expression C2, Value "NN п.п", Type Variant/Object/Range
0
Hugo121
6182 / 2301 / 385
Регистрация: 19.10.2012
Сообщений: 6,840
08.06.2017, 15:10 #4
Цитата Сообщение от Simply me Посмотреть сообщение
Type Variant/Object/Range
!!!
0
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 311
Завершенные тесты: 1
08.06.2017, 15:16  [ТС] #5
А как выделить эту ячейку? C2.Select не работает, Range(C2.Address).Select тоже. Выделить нужно, чтобы получить ActiveCell.Row и ActiveCell.Column. Может, по-другому можно?
0
Hugo121
6182 / 2301 / 385
Регистрация: 19.10.2012
Сообщений: 6,840
08.06.2017, 15:56 #6
Если там Value "NN п.п", то там никак не могло найтись "№", что-то Вы путаете.
А выделять (если нашло) должно, если правда лист активный и не защищён. Если конечно вообще нужно выделать, что ооочень редко на самом деле нужно...
0
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 311
Завершенные тесты: 1
08.06.2017, 16:48  [ТС] #7
Цитата Сообщение от Hugo121 Посмотреть сообщение
Если там Value "NN п.п", то там никак не могло найтись "№", что-то Вы путаете.
Hugo121, просто сюда сообщения с телефона набирала, не нашла "№". Такое значение "№№ п.п"
Мне необязательно выделять. Мне нужно получить строку и столбец этой ячейки.
0
Hugo121
6182 / 2301 / 385
Регистрация: 19.10.2012
Сообщений: 6,840
08.06.2017, 17:09 #8
строка=C2.row
столбец=C2.column
1
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 311
Завершенные тесты: 1
08.06.2017, 17:17  [ТС] #9
Так просто? Спасибо, попробую. Вроде что-то не получалось...
0
pashulka
2325 / 1157 / 465
Регистрация: 01.12.2010
Сообщений: 2,381
08.06.2017, 17:47 #10
Simply me, Метод Select можно применить (разумеется, если это действительно нужно) при соблюдении нескольких условий, во-первых, искомый текст должен наличествовать в ячейках указанного диапазона (это понятно), а во-вторых, активным должен быть именно тот лист, где мы ищем текст. Учесть первое и обойти второе ограничение (без лишних строк, как то отдельное выделение раб.листа), можно, например, так :

Visual Basic
1
2
3
4
5
6
7
8
Dim c As Range
Set c = Worksheets(1).Range("A1:A100").Find("№", , xlValues, xlPart)
 
If Not c Is Nothing Then
   Application.Goto c
Else
   MsgBox "Искомое значение не найдено", vbCritical, ""
End If
1
Hugo121
6182 / 2301 / 385
Регистрация: 19.10.2012
Сообщений: 6,840
08.06.2017, 17:48 #11
Visual Basic
1
Sheets.Item(1).Range()
- вот тут тоже непонятно что за объект Item(1)
0
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 311
Завершенные тесты: 1
08.06.2017, 17:51  [ТС] #12
pashulka, спасибо.
Цитата Сообщение от Hugo121 Посмотреть сообщение
вот тут тоже непонятно что за объект Item(1)
Hugo121, это будет цикл по листам. Sheets.Item(i)
0
Hugo121
6182 / 2301 / 385
Регистрация: 19.10.2012
Сообщений: 6,840
08.06.2017, 17:58 #13
Ну тогда нужно вроде
Visual Basic
1
 Sheets(Item(i))
хотя эти мелкомягкие так иногда чудят...
1
pashulka
2325 / 1157 / 465
Регистрация: 01.12.2010
Сообщений: 2,381
08.06.2017, 19:04 #14
Hugo121, шутите ? Sheets.Item(1) это тоже самое, что и Sheets(1)

P.S. для перебора всех рабочих листов, можно использовать For Each и Worksheets, т.е.

Visual Basic
1
2
3
4
dim ws as worksheet
for each ws in worksheets
 
next
1
Hugo121
6182 / 2301 / 385
Регистрация: 19.10.2012
Сообщений: 6,840
08.06.2017, 21:24 #15
Да, точно, ошибся.
Но зачем писать так сложно?
0
08.06.2017, 21:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2017, 21:24
Привет! Вот еще темы с ответами:

Использование цикла в .find - VBA
Добрый день! Столкнулся с необходимостью совмещения двух таблиц с одинаковой номенклатурой, но разными показателями. Для удобства взял...

Find, найденное в переменную - VBA
With ActiveDocument.Range.Find .Text = "<" & Первое_слово & "," 'поиск в начале слова .Wrap = wdFindStop 'поиск остановить,...

VBA-Excel-Find - VBA
Добрый день! Имеем: в ячейке A2 "2016" в ячейке B2 =ТЕКСТ("01.01." & A2;"дд.ММ.гг") в ячейках с C2 по ND2 =B2+1 .. =NC2+1 для...

Find по нескольким критериям - VBA
Как сделать поиск методом Find объекта RecordSet не по одному, по по нескольким полям?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru