Коллекции в VBA. Создание коллекции из пересекающихся значений 2 других коллекций., Коллекции в VBA. Создание коллекции из пересекающихся значений 2 других коллекций.
Коллекции в VBA. Создание коллекции из пересекающихся значений 2 других коллекций., Коллекции в VBA. Создание коллекции из пересекающихся значений 2 других коллекций.
New, можно конечно использовать Temp = "", но сути это не меняет. Я работаю с Temp, как со строкой. Ничто не мешает использовать в типе String цифры, да и оператор <> используется далеко не только с числовыми значениями. Я думаю, что тут нет проблемы.
Коллекции в VBA. Создание коллекции из пересекающихся значений 2 других коллекций., Коллекции в VBA. Создание коллекции из пересекающихся значений 2 других коллекций.
New, спасибо! Немного разобрался. Дело в функции, а точнее в этой строке кода Set Obj = Coin(Item). Как я понял, Coin(Item) возвращает тип данных String, соответственно Obj всегда имеет значение Nothing. Ваша функция работает так, как нужно. Я ее переписал по другому, тоже рабочий вариант (см.ниже). Не совсем понял почему: "'имейте ввиду, что Col_1 может быть меньше, чем Col_2, тогда цикл неверный". Мы проходим по первой коллекции по всем элементам, сравниваем, нет ли во второй коллекции такого же, и если есть, то добавляем в третью. Не вижу ошибки в цикле.
Код
Private Function IsInCollection(Coin As Collection, _
ByVal Key As String) As Boolean
Dim Temp As String
Temp = 0
On Error Resume Next
Temp = Coin.Item(Key)
If Temp <> 0 Then IsInCollection = True
On Error GoTo 0
End Function
Коллекции в VBA. Создание коллекции из пересекающихся значений 2 других коллекций., Коллекции в VBA. Создание коллекции из пересекающихся значений 2 других коллекций.
Здравствуйте! Задача стоит создать коллекцию значений (строки) из пересекающихся значений двух других коллекций. То есть имеем коллекцию Col_1 и Col_2, а создаем Col_sum, которая будет содержать только те элементы, которые содержатся и в Col_1 и Col_2. Почему то Col_sum не содержит элементов, хотя пересекающиеся элементы точно есть. Может быть в приведенном куске кода ошибка есть. Прошу совета.
Код
On Error Resume Next
For Each MyElement In Col_1
If IsInCollection(Col_2, CStr(MyElement)) Then
Col_sum.Add CStr(MyElement), CStr(MyElement)
End If
Next MyElement
On Error GoTo 0
Код
Private Function IsInCollection(Coin As Object, _
Item As String) As Boolean
Dim Obj As Object
On Error Resume Next
Set Obj = Coin(Item)
IsInCollection = Not Obj Is Nothing
End Function
Здравствуйте! В продолжение темы. Время идет и сайт регулярно модернизируется. Парсер конечно же перестает работать. Столкнулся с новой проблемой, которую сам не смог решить. И так, суть проблемы. Имеем тот же сайт https://www.nowgoal5.com/football/6in1/?id=23 Методами, которые описаны выше в топе, получаю исходный код страницы. Но проблема в том, что он не содержит нужные мне данные и проблема не решается даже при полной прогрузке страницы. Для понимания и наглядности, мне нужны данные, которые содержатся в следующих таблицах Код элемента у них такой -тег <table> (содержит все необходимые данные): Но в коде страницы это выглядит так:
То есть контейнер </ div id="odds"></div> открылся и тут же закрылся, не предоставив никаких данных парсеру. На сколько я понимаю, дело в скриптах. Собственно вопрос в том, возможно ли средствами VBA получить полный код страницы? Буду признателен за любую помощь и замечания.
Игорь, добрый день! С вашей помощью код работал долгое время без проблем. Вчера-сегодня страница не прогружается (на сайте видимых проблем нет), опять получаю "заставку". Не подскажете в чем может быть проблема?
Всем добрый вечер! Есть сайт http://www.nowgoal.com/6in1.aspx?id=31. Пытаюсь парсить HTML код, но проблема в том, что пока данные на сайте подгружаются, HTML код не содержит нужных данных, а с помощью своего кода получаю именно HTML-код "заставки". Вопрос в том, как получить уже "прогруженный" код страницы.
Код
Sub primer()
Dim my_url As String
Dim html_doc As Variant, xml_obj As Variant
Dim Tag_tab As Object
my_url = "http://www.nowgoal.com/6in1.aspx?id=31"
Set html_doc = CreateObject("htmlfile")
Set xml_obj = CreateObject("MSXML2.XMLHTTP")
xml_obj.Open "GET", my_url, False
xml_obj.send
html_doc.body.InnerHTML = xml_obj.responseText
Set xml_obj = Nothing
MsgBox html_doc.body.getElementsByTagName("table")(0).getElementsByTagName("tr")(0).innertext
End Sub
День добрый. Не силен с DOM, но разбираюсь потихоньку. Застрял с такой проблемой.
Код
Sub Generic_Match_List()
Dim i As Integer, r As Integer, c As Integer
Dim mas As Variant
Dim my_url As String
For i = 1 To Range("Список[Ссыль]").Count
my_url = Range("Список[Ссыль]")(i) & "/matches/"
Set html_doc = CreateObject("htmlfile")
Set xml_obj = CreateObject("MSXML2.XMLHTTP")
xml_obj.Open "GET", my_url, False
xml_obj.send
html_doc.body.InnerHTML = xml_obj.responseText
Set xml_obj = Nothing
'Получение массива с данными
With html_doc.body.getElementsByTagName("table")(0).getElementsByTagName("tr")
ReDim mas(.Length, 6)
For r = 1 To .Length
For c = 0 To 5
mas(r, c) = .item(r).Cells(c).innertext
Debug.Print mas(r, c)
Next c
mas(r, 6) = .item(r).getElementsByClassName("score-time score")(0).GetAttribute("href")
Debug.Print mas(r, 6)
Next r
End With
Next i
End Sub
Логика такая: в HTML таблице нахожу нужную строку, в ней ищу элементы (столбцы <td>) с классом "score-time score", а такой там один, далее пытаюсь получить из него ссылку. Генерирует ошибку object doesn't support this property or method. Знаю, что проблема начинается с метода getElementsByClassName("score-time score")(0). Но найти решение пока не выходит. Думаю ответ на поверхности, может кто подскажет.
Проверка данных в ячейке, В ячейке забита формула. Необходимо, чтобы при появлении в этой ячейке отрицательного значения, эксель выводил предупреждение.
Проверка данных в ячейке, В ячейке забита формула. Необходимо, чтобы при появлении в этой ячейке отрицательного значения, эксель выводил предупреждение.
Добрый вечер! Суть проблемы в описании! Проверка данных удовлетворяет только при вводе данных в ячейку, но в данном случае ячейка с формулой и зависит от значений в других ячейках. Было бы замечательно, если можно было бы обойтись без макросов.
Добрый вечер друзья! Предположим есть список с названиями чего-либо. Все они являются гиперссылками и перемещают на другой лист книги в ячейку А1. Можно ли сделать так, чтобы ячейке А1 присваивалось имя нажатой гиперссылки. Нужно это для того, чтобы далее использовать значение этой ячейки на этом листе. Вопрос: как это сделать? Заранее спасибо!
Поиск значения в таблице данных. ВПР, ПОИСКПОЗ и ИНДЕКС в классическом виде не подходят., Из таблицы требуется вытащить значение, соответствующее двум параметрам.
Добрый день! Сформулировать толково проблематично, поэтому прикладываю файл, где есть условие и конечный результат. Первый параметр - номер строки (выбирается) из списка (ячейка залитая желтым). Второй параметр в таблице с результатами (несколько констант), соответствующее ему значение нужно найти в таблице данных в заданной строке. Таблица приведена для примера, в реальности она будет намного больше. Заранее спасибо всем откликнувшимся!
Добрый день! У меня такая задача: требуется определить количество дней между текущим и последним матчем команды, независимо от того, где она играла последний матч, в гостях или дома. Если команда играет дома, то количество дней ставиться в столбце "отдых хоз", если в гостях, то в столбце "отдых гостей". Если в списке это первый матч команды, то в таблице отдых команды проставляется "-". Таблица будет все время дополняться новыми матчами, но по дате они будут позже последней даты в таблице. Подскажите, можно ли реализовать эту задачу с помощью формул? Без VBA. Файл прикладываю.