Жаль что нет новых уроков и не удалось снять все задуманное. Видимо связано с тем, что немногим это нужно) Очень интересно и доходчиво, спасибо за проделанную работу, Rom Sher!
Ромчер, пропиши кошельки в поддержку, возможно хоть так стимул появится что-то выкладывать! я думаю найдутся добрые люди поддержать отечественного производителя)
Спасибо большое за твои уроки, они очень легко усваиваются, видимо и за того что пару лет назад изучал PHP :) Ну сейчас понадобилось для дела создать журнал продаж с расчетом ЗП, бонусов, штрафов и тд. пришлось прибегнуть к excel и сделать примитивную таблицу. Первый вариант сделал очень большим, более 6 мб., что печально, и за этого не могу открыть его в облаке майкрософта(там нужен фаил до 5 мб.) сейчас решил подучить VBA что бы программно сделать все расчеты. Но в одном из твоих видео услышал про возможность работы с базой SQL, в PHP это очень удобно для хранения данных, хочу и здесь подключить БД. Когда планируешь сделать этот урок :) ?
Предлагаю свой вариант :) 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 и т.д., помимо этого, как использовать события этих объектов, ведь если мы их просто динамически создадим, то событий у нас не будет, насколько мне известно тут нужно работать через классы. Думаю всем будет интересно) Также, как отправлять электронные письма и т.п. Премного благодарен за обратную связь.
Добрый день. Как с помощью VBA сделать из двух тегов один для парсера цены товара с сайта? Пример: 8 73 грн Если использовать действие HTML Взять цену товара v.2 , то программа выдает тег 8 , а 73 нет. Как их объединить? Очень нужна помощь.
Спасибо за уроки! Скажите, существует ли подробный справочник по всем функциям, объектам и т.д. VBA? Понимаю, что есть встроеная справка, но я в английском не силен...
Спасибо большое за уроки! Ждем с нетерпением новых. И еще у меня не получается конвертировать 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, " ", "")
Спасибо за уроки. Все круто. Как сделать веб-запрос с вводом пароля?Т.е. При запуске запроса, автоматом вводится логин и пароль на сайте, и происходит импорт данных
Kursoft для трассировки функция вызывается sub test, где аргументу sStr присваивается пустое значение(getnumber (“”)) в итоге получается что sStr пустое и соответственно lenght не читается. Если же функция задается с листа, то все работает. Как у вас на видео получается присвоить значение аргументу при трассировке и без sub test?
А почему у меня не запускается пошаговая отладка как у Вас в видео? Офис у меня 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.
Спасибо за уроки, все доступно и понятно. За три дня посмотрела все видео, узнала много нового, хотелось бы еще больше уроков по VBA
Жаль что нет новых уроков и не удалось снять все задуманное. Видимо связано с тем, что немногим это нужно) Очень интересно и доходчиво, спасибо за проделанную работу, Rom Sher!
Ромчер, пропиши кошельки в поддержку, возможно хоть так стимул появится что-то выкладывать! я думаю найдутся добрые люди поддержать отечественного производителя)
СПАСИБО !
1) как экспортировать свои модули для подальшего сбережения ?
2) когда ожидать выхода нового урока ?
+Rom Scher , ловлю Вас на слове :)
до конца недели еще время есть :)
Отличные уроки! Спасибо! Будет еще?
***** спасибо
+Rom Scher Видимо проект затянулся, очень жаль...
Спасибо большое за твои уроки, они очень легко усваиваются, видимо и за того что пару лет назад изучал PHP :)
Ну сейчас понадобилось для дела создать журнал продаж с расчетом ЗП, бонусов, штрафов и тд. пришлось прибегнуть к excel и сделать примитивную таблицу.
Первый вариант сделал очень большим, более 6 мб., что печально, и за этого не могу открыть его в облаке майкрософта(там нужен фаил до 5 мб.)
сейчас решил подучить VBA что бы программно сделать все расчеты.
Но в одном из твоих видео услышал про возможность работы с базой SQL, в PHP это очень удобно для хранения данных, хочу и здесь подключить БД.
Когда планируешь сделать этот урок :) ?
Предлагаю свой вариант :)
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 и т.д., помимо этого, как использовать события этих объектов, ведь если мы их просто динамически создадим, то событий у нас не будет, насколько мне известно тут нужно работать через классы. Думаю всем будет интересно) Также, как отправлять электронные письма и т.п. Премного благодарен за обратную связь.
Добрый день.
Как с помощью VBA сделать из двух тегов один для парсера цены товара с сайта? Пример:
8
73
грн
Если использовать действие HTML Взять цену товара v.2 , то программа выдает тег 8 , а 73 нет.
Как их объединить? Очень нужна помощь.
А еще, прикрепи к урокам фаил с написанным кодом.
Спасибо за уроки! Скажите, существует ли подробный справочник по всем функциям, объектам и т.д. VBA? Понимаю, что есть встроеная справка, но я в английском не силен...
+Rom Scher Спасибо!
Спасибо большое за уроки! Ждем с нетерпением новых.
И еще у меня не получается конвертировать 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, " ", "")
Спасибо за уроки. Все круто. Как сделать веб-запрос с вводом пароля?Т.е. При запуске запроса, автоматом вводится логин и пароль на сайте, и происходит импорт данных
Спасибо!
почему при трассировке на массиве redim выскакивает ошибка что вне диапазона хотя сама функция работает? Lenght в locals не выводит значение
Видимо вы пытаетесь обратиться к индексу которого не существует. Может быть ваш массив имеет длину = 0. Проверьте инструкцию ReDim
Kursoft ругается на lenght в цикле for, я так понимаю при трассировке lenght не читается
Читается, замените Strings.Len(sStr) на просто например 5 возможно sStr пустая
Kursoft для трассировки функция вызывается sub test, где аргументу sStr присваивается пустое значение(getnumber (“”)) в итоге получается что sStr пустое и соответственно lenght не читается. Если же функция задается с листа, то все работает. Как у вас на видео получается присвоить значение аргументу при трассировке и без sub test?
А почему у меня не запускается пошаговая отладка как у Вас в видео? Офис у меня 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 почему при трассировке на массиве выскакивает ошибка что вне диапазона хотя сама функция работает?