Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Excel VBA (часть 3)

Автор: KF121
Дата сообщения: 11.04.2012 14:31
оффис русский значит формула номер 2 которую я привел.

вместо столбца A укажите свой столбец где находятся номера телефонов, второй параметр ВПР функции - перейдите на второй лист и укажите столбец где указаны номера телефонов в куче.

так же посмотрите справку по команде ВПР
Автор: psiho
Дата сообщения: 11.04.2012 15:19
KF121 и 7615790 , есть один нюанс. В Офисе 2003 нельзя сделать фильтр по цвету, если не стоят сторонние надстройки. Поэтому, если нужно будет затем отобрать эти выделенные данные, то лучше не применять условное форматирование, а просто напротив каждой позиции в следующем столбце поставить формулу ВПР. Тогда он покажет совпавшие номера и их можно будет отфильтровать


Автор: KF121
Дата сообщения: 11.04.2012 16:57
psiho
ну задание было не фильтровать а покрасить. ))))
Автор: 7615790
Дата сообщения: 11.04.2012 17:12
эх, друзья, не спорьте.
Дело в том, что данные, которые расположены на листе2 не структурированы, т.е. идет текст в котором номер телефона, дальше мейл, в общем, всё в куче. Если запускаешь для поиска и замены Ctrl+H, то ему всё равно, в какой колонке и частичное совпадение то же берет хорошо. ВПР команды штука то же не плохая, но немного не то. Грубо говоря, нужно чтобы в поле поиска и замены подставлялись одна за одной значения из базы. В моем случае это значения в колонке 1 Листа 1
Автор: psiho
Дата сообщения: 11.04.2012 20:12

Цитата:
Если запускаешь для поиска и замены Ctrl+H, то ему всё равно, в какой колонке и частичное совпадение то же берет хорошо.


Не всегда.Допустим есть искомый номер телефона "123456", а на Листе 2 следующие числа: 123,567,12345. Примените Ctrl+H и он ничего не найдет, хотя эти числа представляют собой частичные совпадения.И что значит по-вашему частичное совпадение? Тот же пример выше: число 1 или 12 это тоже частичное совпадение или нет? Какая глубина совпадения должна быть?
P.S. короче, реализовать с помощью маленького кода не сложно,только необходима эта глубина совпадений.
Автор: andrewkard1980
Дата сообщения: 11.04.2012 21:36
Добрый вечер. Помогите, пожалуйста, с кодом, не могу разобраться как программно выбрать значение из выпадающего списка на сайте, вот часть кода:

Код:
Sub Test()
Dim oIE As Object

Set oIE = CreateObject("InternetExplorer.Application")
oIE.navigate "http://o.aviso.ua/default2.aspx"
oIE.Visible = True

Do While oIE.Busy
Loop
oIE.document.all("ctl00_cph_next1").Click
'oIE.document.forms("ctl00_cph_rootrubric").elements("922b27ff-1773-4dae-8a82-b1415327021a").Submit

Do While oIE.Busy
Loop

End Sub
Автор: psiho
Дата сообщения: 12.04.2012 06:44

Цитата:
Помогите, пожалуйста, с кодом

Вместо:

Код: oIE.document.all("ctl00_cph_next1").Click
Автор: Les1at
Дата сообщения: 12.04.2012 08:45
Доброго времени суток, как отловить события удаления и вставки строк с помощью перехвата ID команд (в стандартном наборе Excel обработки таких событий нет)?
Автор: andrewkard1980
Дата сообщения: 12.04.2012 09:20
psiho, спасибо. Кнопка ("ctl00_cph_next1") и так вроде бы нажималась, а вот следующая строка (которую я закоментировал) должна выбрать из выпадающего списка (хотелось бы), но я не знаю как правильно сформулировать код. Заранее спасибо.

Автор: psiho
Дата сообщения: 12.04.2012 09:48

Цитата:
а вот следующая строка (которую я закоментировал) должна выбрать из выпадающего списка (хотелось бы)

Вот:

Код:
oIE.document.GetElementbyID("ctl00_cph_rootrubric").Value = "922b27ff-1773-4dae-8a82-b1415327021a"
Автор: andrewkard1980
Дата сообщения: 12.04.2012 10:17

Цитата:
Вот:

Код:
oIE.document.GetElementbyID("ctl00_cph_rootrubric").Value = "922b27ff-1773-4dae-8a82-b1415327021a"

Выдает ошибку:
Runtime Error 91: Object variable or with block variable not set
Автор: psiho
Дата сообщения: 12.04.2012 10:45

Цитата:
Выдает ошибку

Извиняюсь, всё время забываю, что каждый раз при выполнении какого-нибудь метода нужна проверка загрузки страницы.Вот:

Код:
oIE.document.all("ctl00_cph_next1").Click
Do While oIE.Busy
Loop
oIE.document.GetElementbyID("ctl00_cph_rootrubric").Value = "922b27ff-1773-4dae-8a82-b1415327021a"
Автор: andrewkard1980
Дата сообщения: 12.04.2012 11:52
psiho
Точно! Спасибо огромное

Добавлено:
psiho
Хотел еще уточнить, если форма в коде сайта не видна и список формируется методом POST, можно как то этот список открыть и выбрать требуемое значение? В коде вместо списка есть вот что:

Код:
<form id="ads-add" method="post" action="add_edit_db2.php">
<div id="navi"></div>
<div id="form-view"></div>
</form>
Автор: psiho
Дата сообщения: 12.04.2012 13:38

Цитата:
Хотел еще уточнить

Дай ссылку на страницу

Добавлено:

Цитата:
можно как то этот список открыть и выбрать требуемое значение?

Попробуй этот код, должен появиться список:

Код: oIE.document.forms("ads-add").Submit
Автор: andrewkard1980
Дата сообщения: 12.04.2012 14:43
http://www.fn.ua/newadd.php

Добавлено:

Цитата:
Попробуй этот код, должен появиться список:

Код:oIE.document.forms("ads-add").Submit


Прошу прощения, появиться где? Он на сайте есть в виде выпадающего списка и слова в нем "Выберите", или ты имеешь ввиду что то типа Debug.Print?

Добавлено:
Я наверное не правильно выразился, на сайте список есть, а вот в коде нет.
Автор: psiho
Дата сообщения: 12.04.2012 14:57
andrewkard1980
В коде список этот есть.
по аналогии с предыдущими постами,например, выбираем в списке пункт 2:

Код: oIE.document.GetElementbyID("first-select").Value = "2"
Автор: andrewkard1980
Дата сообщения: 12.04.2012 15:34
Спасибо, но я так и не понял, где ты нашел это: "first-select"? Дальше не продвинулся ни на шаг . Ткни пальцем, куда смотреть, пжл. Спасибо.
Автор: psiho
Дата сообщения: 12.04.2012 16:00
andrewkard1980
Во-первых, заработало или нет?
Во-вторых, в какой программе ты просматриваешь код страницы?
Автор: andrewkard1980
Дата сообщения: 12.04.2012 16:04
Сработало, но на следующем застрял. Код страницы смотрел в ИЕ и ФФ.
Автор: psiho
Дата сообщения: 12.04.2012 16:16
В FF 11-ой версии:
1.Правой клавишей мыши на странице выбираешь "исследовать элемент"
2. выбираешь нужный элемент левой клавишей мыши
3. внизу окна браузера будет серая полоска. Справа выбираешь "HTML" и смотришь код.
И будет ТЕБЕ счастье!
Автор: andrewkard1980
Дата сообщения: 12.04.2012 16:21
Как то странно он работает, вроде бы срабатывала, а теперь опять пишет: Runtime Error 91: Object variable or with block variable not set.


Добавлено:
Попробую перед поставить задержку.

Добавлено:

Цитата:
В FF 11-ой версии:
1.Правой клавишей мыши на странице выбираешь "исследовать элемент"
2. выбираешь нужный элемент левой клавишей мыши
3. внизу окна браузера будет серая полоска. Справа выбираешь "HTML" и смотришь код.
И будет ТЕБЕ счастье!

Спасибо. Попробую отпишусь.

Добавлено:
Нашел, ну и заморочено же . Спасибо огромное!!!
Автор: psiho
Дата сообщения: 12.04.2012 16:43

Цитата:
Спасибо огромное!!!

Привет Ридной Баткивщине!
Автор: andrewkard1980
Дата сообщения: 12.04.2012 16:52
Спасибо. Все же испытываю сложность со следующим списком, у него нет ID, как мне к нему обратится? Не подскажешь?
Автор: psiho
Дата сообщения: 12.04.2012 17:01

Цитата:
у него нет ID, как мне к нему обратится

Пока не могу помочь: или через часика три или завтра утром.
Автор: andrewkard1980
Дата сообщения: 12.04.2012 17:02
Еще один интересный момент, когда первый список выбираешь вручную, сразу появляется второй, если программно - то нет его

Добавлено:
psiho
спасибо, буду ждать.
Автор: psiho
Дата сообщения: 13.04.2012 07:05
andrewkard1980
Пока помочь ничем не могу. Как говорится-"Я не волшебник.Я только учусь"
Но! Хорошую задачку ты мне подсунул. Как-нибудь на досуге поразгадываю её. Если решу, то отпишусь. А пока может быть другие подскажут.
Автор: andrewkard1980
Дата сообщения: 13.04.2012 09:21
psiho
Все равно спасибо, половину подсказал же .
Автор: psiho
Дата сообщения: 13.04.2012 20:20

Цитата:
как отловить события удаления и вставки строк

Les1at,
Да, таких стандартных событий в Excel нет, зато в нём есть два других, а именно:
"Selection Change" -возникает при смене выбранной ячейки (ячеек)
"Change" - при изменении в самой ячейке (ячейках). Этому событию ВСЕГДА предшествует "Selection Change"
Вот в них и нужно отслеживать события, связанные с вставкой и удалением строк. Для этого, нужно всё время в этих двух событиях запоминать последнюю строку на листе и сравнивать с предыдущим значением. Короче вот:

Код: Dim СтараяПослСтрокаЛист As Long, НоваяПослСтрокаЛист As Long

Private Sub Worksheet_Change(ByVal Target As Range)
НоваяПослСтрокаЛист = 0
On Error Resume Next
НоваяПослСтрокаЛист = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
On Error GoTo 0
If НоваяПослСтрокаЛист < СтараяПослСтрокаЛист Then
MsgBox ("Удалена строка № " & Target.Row)
ElseIf НоваяПослСтрокаЛист > СтараяПослСтрокаЛист Then
MsgBox ("Вставлена строка № " & Target.Row)
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
СтараяПослСтрокаЛист = 0
On Error Resume Next
СтараяПослСтрокаЛист = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
On Error GoTo 0
End Sub
Автор: Stradler
Дата сообщения: 22.04.2012 16:56
Уважаемые спецы! Вынужден обратиться за помощью. Делаю книгу ексел без использования макросов. Однако уперся в задачу, которую похоже без макроса не решить. На последнем листе получился список изделий и рядом количество каждого изделия. На каждое из изделий есть гиперссылка на чертеж PDF. Необходимо (желательно) одним нажатием активировать печать пачки чертежей (по одному листу каждого изделия), количество которых больше нуля.
[img] [/img]
Или может подскажете варианты решения задачи.
Автор: NJCorp
Дата сообщения: 22.04.2012 21:44
Без макросов...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127

Предыдущая тема: VS 2010


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.