Ромчер, пропиши кошельки в поддержку, возможно хоть так стимул появится что-то выкладывать! я думаю найдутся добрые люди поддержать отечественного производителя)
Жаль что нет новых уроков и не удалось снять все задуманное. Видимо связано с тем, что немногим это нужно) Очень интересно и доходчиво, спасибо за проделанную работу, Rom Sher!
Спасибо большое за твои уроки, они очень легко усваиваются, видимо и за того что пару лет назад изучал PHP :) Ну сейчас понадобилось для дела создать журнал продаж с расчетом ЗП, бонусов, штрафов и тд. пришлось прибегнуть к excel и сделать примитивную таблицу. Первый вариант сделал очень большим, более 6 мб., что печально, и за этого не могу открыть его в облаке майкрософта(там нужен фаил до 5 мб.) сейчас решил подучить VBA что бы программно сделать все расчеты. Но в одном из твоих видео услышал про возможность работы с базой SQL, в PHP это очень удобно для хранения данных, хочу и здесь подключить БД. Когда планируешь сделать этот урок :) ?
Добрый день. Как с помощью VBA сделать из двух тегов один для парсера цены товара с сайта? Пример: 8 73 грн Если использовать действие HTML Взять цену товара v.2 , то программа выдает тег 8 , а 73 нет. Как их объединить? Очень нужна помощь.
Предлагаю свой вариант :) Public Function getNumbersFromString(Strings As String) As String Dim Numbers As Long If Strings = Empty Then getNumbersFromStrings = "" Exit Function End If For i = 1 To Len(Strings) If IsNumeric(Mid(Strings, i, 1)) Then Numbers = Numbers & Mid(Strings, i, 1) End If Next i getNumbersFromString = Numbers End Function
***** Предлагаю Вам попробовать расширить функционал, вернее проверить, как будет вести себя функция при указании диапазона ячеек, если автоматом понимает круто, а если нет, предполагаю там нужно будет использовать циклы на основании начала и конца диапазона соответственно, но было бы очень интересно увидеть реализацию!) Кстати по поводу массивов скажу, что дело гиблое если речь идет об очень больших значениях, например если в Вашей функции использовать ссылку на ячейку с 1.000.000 знаков, думаю Вы понимаете, какие будут идти глюки, кроме того может просто вылететь overflow, что зависит уже от объема ОЗУ.
***** так как нет другой связи пишу сюда. Мне бы очень хотелось увидеть уроки о динамическом создании элементов интерфейса, то есть исп. UserForm и добавление контроллеров в цикле и работа с этими контроллерами, такими как CheckBox, TextBox и т.д., помимо этого, как использовать события этих объектов, ведь если мы их просто динамически создадим, то событий у нас не будет, насколько мне известно тут нужно работать через классы. Думаю всем будет интересно) Также, как отправлять электронные письма и т.п. Премного благодарен за обратную связь.
Спасибо большое за уроки! Ждем с нетерпением новых. И еще у меня не получается конвертировать sStr в цифры CLng как у вас на строчке getNumbersFromString = CLng(sStr). у меня она не выполняет условие ifNumeric(sStr) и идет на ноль. Сможете обьяснить? Может кто то знает? Заранее спасибо! Вот весь код: Option Explicit Public Function GetNumber(sStr As String) As Long Dim length As Long Dim chars() As Variant Dim i As Integer If sStr "" Then length = Strings.Len(sStr) ReDim chars(1 To length) As Variant ' REDIM ADJUSTS THE LENGHTS OF THE ARRAY chars AUTOMATICALLY For i = 1 To length If Information.IsNumeric(Strings.Mid(sStr, i, 1)) Then chars(i) = Strings.Mid(sStr, i, 1) End If Next i sStr = Strings.Trim(Strings.Join(chars)) If IsNumeric(sStr) Then GetNumber = CLng(sStr) Else GetNumber = 0 End If ElseIf sStr = "" Then GetNumber = "N/A" Else sStr = "" End If End Function
+Rom Scher на всякий случай может кому понадобится я немного изменил ту часть с TRIM, так как TRIM функция только обрезает по бокам, и не удаляет пустоты м/у цифрами. можете вставить функцию Replace: For i = 1 To length If Information.IsNumeric(Strings.Mid(sStr, i, 1)) Then scharacters(i) = Strings.Mid(sStr, i, 1) End If Next i sStr = Strings.Trim(Strings.Join(scharacters)) GetNumbers = Replace(sStr, " ", "")
Спасибо за уроки! Скажите, существует ли подробный справочник по всем функциям, объектам и т.д. VBA? Понимаю, что есть встроеная справка, но я в английском не силен...
Спасибо за уроки. Все круто. Как сделать веб-запрос с вводом пароля?Т.е. При запуске запроса, автоматом вводится логин и пароль на сайте, и происходит импорт данных
А почему у меня не запускается пошаговая отладка как у Вас в видео? Офис у меня 2016. Если писать sub test () ... end sub то в макросах пошаговая отладка работает. Остановился здесь Public Function getNumbersFromString(sStr As String)Dim lenght As Long Dim chars() As Variant lenght = Strings.Len(sStr) ReDim chars(1 To lenght) As VariantFor i = 1 To length chars(i) = Strings.Mid(sStr, i, 1) Next i И не могу увидеть, в locals ни массив...ничего
Функцию нельзя запустить по умолчанию как процедуру. Если хотите протрассировать функцию вызовите её в процедуре. Т.е. sub Test() getNumberFromString("") endsub В locals видны переменные только текущего контекста. Т.е. если вы внутри функции то увидите её переменные в окне Locals.
Kursoft для трассировки функция вызывается sub test, где аргументу sStr присваивается пустое значение(getnumber (“”)) в итоге получается что sStr пустое и соответственно lenght не читается. Если же функция задается с листа, то все работает. Как у вас на видео получается присвоить значение аргументу при трассировке и без sub test?
Ромчер, пропиши кошельки в поддержку, возможно хоть так стимул появится что-то выкладывать! я думаю найдутся добрые люди поддержать отечественного производителя)
Жаль что нет новых уроков и не удалось снять все задуманное. Видимо связано с тем, что немногим это нужно) Очень интересно и доходчиво, спасибо за проделанную работу, Rom Sher!
Спасибо за уроки, все доступно и понятно. За три дня посмотрела все видео, узнала много нового, хотелось бы еще больше уроков по VBA
СПАСИБО !
1) как экспортировать свои модули для подальшего сбережения ?
2) когда ожидать выхода нового урока ?
+Rom Scher , ловлю Вас на слове :)
до конца недели еще время есть :)
Отличные уроки! Спасибо! Будет еще?
***** спасибо
+Rom Scher Видимо проект затянулся, очень жаль...
Спасибо большое за твои уроки, они очень легко усваиваются, видимо и за того что пару лет назад изучал PHP :)
Ну сейчас понадобилось для дела создать журнал продаж с расчетом ЗП, бонусов, штрафов и тд. пришлось прибегнуть к excel и сделать примитивную таблицу.
Первый вариант сделал очень большим, более 6 мб., что печально, и за этого не могу открыть его в облаке майкрософта(там нужен фаил до 5 мб.)
сейчас решил подучить VBA что бы программно сделать все расчеты.
Но в одном из твоих видео услышал про возможность работы с базой SQL, в PHP это очень удобно для хранения данных, хочу и здесь подключить БД.
Когда планируешь сделать этот урок :) ?
А еще, прикрепи к урокам фаил с написанным кодом.
Добрый день.
Как с помощью VBA сделать из двух тегов один для парсера цены товара с сайта? Пример:
8
73
грн
Если использовать действие HTML Взять цену товара v.2 , то программа выдает тег 8 , а 73 нет.
Как их объединить? Очень нужна помощь.
Предлагаю свой вариант :)
Public Function getNumbersFromString(Strings As String) As String
Dim Numbers As Long
If Strings = Empty Then
getNumbersFromStrings = ""
Exit Function
End If
For i = 1 To Len(Strings)
If IsNumeric(Mid(Strings, i, 1)) Then
Numbers = Numbers & Mid(Strings, i, 1)
End If
Next i
getNumbersFromString = Numbers
End Function
***** Предлагаю Вам попробовать расширить функционал, вернее проверить, как будет вести себя функция при указании диапазона ячеек, если автоматом понимает круто, а если нет, предполагаю там нужно будет использовать циклы на основании начала и конца диапазона соответственно, но было бы очень интересно увидеть реализацию!) Кстати по поводу массивов скажу, что дело гиблое если речь идет об очень больших значениях, например если в Вашей функции использовать ссылку на ячейку с 1.000.000 знаков, думаю Вы понимаете, какие будут идти глюки, кроме того может просто вылететь overflow, что зависит уже от объема ОЗУ.
***** так как нет другой связи пишу сюда. Мне бы очень хотелось увидеть уроки о динамическом создании элементов интерфейса, то есть исп. UserForm и добавление контроллеров в цикле и работа с этими контроллерами, такими как CheckBox, TextBox и т.д., помимо этого, как использовать события этих объектов, ведь если мы их просто динамически создадим, то событий у нас не будет, насколько мне известно тут нужно работать через классы. Думаю всем будет интересно) Также, как отправлять электронные письма и т.п. Премного благодарен за обратную связь.
Спасибо большое за уроки! Ждем с нетерпением новых.
И еще у меня не получается конвертировать sStr в цифры CLng как у вас на строчке getNumbersFromString = CLng(sStr).
у меня она не выполняет условие ifNumeric(sStr) и идет на ноль. Сможете обьяснить?
Может кто то знает? Заранее спасибо!
Вот весь код:
Option Explicit
Public Function GetNumber(sStr As String) As Long
Dim length As Long
Dim chars() As Variant
Dim i As Integer
If sStr "" Then
length = Strings.Len(sStr)
ReDim chars(1 To length) As Variant ' REDIM ADJUSTS THE LENGHTS OF THE ARRAY chars AUTOMATICALLY
For i = 1 To length
If Information.IsNumeric(Strings.Mid(sStr, i, 1)) Then
chars(i) = Strings.Mid(sStr, i, 1)
End If
Next i
sStr = Strings.Trim(Strings.Join(chars))
If IsNumeric(sStr) Then
GetNumber = CLng(sStr)
Else
GetNumber = 0
End If
ElseIf sStr = "" Then
GetNumber = "N/A"
Else
sStr = ""
End If
End Function
+Rom Scher спасибо за скорый ответ.
Я перепроверил - С в латинице, и все равно перепрыгивает.
+Rom Scher на всякий случай может кому понадобится я немного изменил ту часть с TRIM, так как TRIM функция только обрезает по бокам, и не удаляет пустоты м/у цифрами.
можете вставить функцию Replace:
For i = 1 To length
If Information.IsNumeric(Strings.Mid(sStr, i, 1)) Then
scharacters(i) = Strings.Mid(sStr, i, 1)
End If
Next i
sStr = Strings.Trim(Strings.Join(scharacters))
GetNumbers = Replace(sStr, " ", "")
Спасибо за уроки! Скажите, существует ли подробный справочник по всем функциям, объектам и т.д. VBA? Понимаю, что есть встроеная справка, но я в английском не силен...
+Rom Scher Спасибо!
Спасибо за уроки. Все круто. Как сделать веб-запрос с вводом пароля?Т.е. При запуске запроса, автоматом вводится логин и пароль на сайте, и происходит импорт данных
Спасибо!
А почему у меня не запускается пошаговая отладка как у Вас в видео? Офис у меня 2016. Если писать sub test () ... end sub то в макросах пошаговая отладка работает. Остановился здесь
Public Function getNumbersFromString(sStr As String)Dim lenght As Long
Dim chars() As Variant
lenght = Strings.Len(sStr)
ReDim chars(1 To lenght) As VariantFor i = 1 To length
chars(i) = Strings.Mid(sStr, i, 1)
Next i
И не могу увидеть, в locals ни массив...ничего
Функцию нельзя запустить по умолчанию как процедуру. Если хотите протрассировать функцию вызовите её в процедуре. Т.е.
sub Test()
getNumberFromString("")
endsub
В locals видны переменные только текущего контекста. Т.е. если вы внутри функции то увидите её переменные в окне Locals.
Kursoft почему при трассировке на массиве выскакивает ошибка что вне диапазона хотя сама функция работает?
почему при трассировке на массиве redim выскакивает ошибка что вне диапазона хотя сама функция работает? Lenght в locals не выводит значение
Видимо вы пытаетесь обратиться к индексу которого не существует. Может быть ваш массив имеет длину = 0. Проверьте инструкцию ReDim
Kursoft ругается на lenght в цикле for, я так понимаю при трассировке lenght не читается
Читается, замените Strings.Len(sStr) на просто например 5 возможно sStr пустая
Kursoft для трассировки функция вызывается sub test, где аргументу sStr присваивается пустое значение(getnumber (“”)) в итоге получается что sStr пустое и соответственно lenght не читается. Если же функция задается с листа, то все работает. Как у вас на видео получается присвоить значение аргументу при трассировке и без sub test?