Программирование на VBA простыми словами ур. 11 (2-ая программа - функция)

Поділитися
Вставка
  • Опубліковано 17 лис 2024

КОМЕНТАРІ • 29

  • @ligabooz
    @ligabooz 8 років тому +4

    Ромчер, пропиши кошельки в поддержку, возможно хоть так стимул появится что-то выкладывать! я думаю найдутся добрые люди поддержать отечественного производителя)

  • @rbrest45
    @rbrest45 8 років тому

    Жаль что нет новых уроков и не удалось снять все задуманное. Видимо связано с тем, что немногим это нужно) Очень интересно и доходчиво, спасибо за проделанную работу, Rom Sher!

  • @ИринаСенцова-м7ф
    @ИринаСенцова-м7ф 8 років тому

    Спасибо за уроки, все доступно и понятно. За три дня посмотрела все видео, узнала много нового, хотелось бы еще больше уроков по VBA

  • @_Iokanaan_Marusidze_
    @_Iokanaan_Marusidze_ 8 років тому

    СПАСИБО !
    1) как экспортировать свои модули для подальшего сбережения ?
    2) когда ожидать выхода нового урока ?

    • @_Iokanaan_Marusidze_
      @_Iokanaan_Marusidze_ 8 років тому

      +Rom Scher , ловлю Вас на слове :)
      до конца недели еще время есть :)

  • @crashoverride9681
    @crashoverride9681 9 років тому +1

    Отличные уроки! Спасибо! Будет еще?

    • @crashoverride9681
      @crashoverride9681 9 років тому

      ***** спасибо

    • @totk4308
      @totk4308 8 років тому

      +Rom Scher Видимо проект затянулся, очень жаль...

  • @Pavliusik
    @Pavliusik 9 років тому

    Спасибо большое за твои уроки, они очень легко усваиваются, видимо и за того что пару лет назад изучал PHP :)
    Ну сейчас понадобилось для дела создать журнал продаж с расчетом ЗП, бонусов, штрафов и тд. пришлось прибегнуть к excel и сделать примитивную таблицу.
    Первый вариант сделал очень большим, более 6 мб., что печально, и за этого не могу открыть его в облаке майкрософта(там нужен фаил до 5 мб.)
    сейчас решил подучить VBA что бы программно сделать все расчеты.
    Но в одном из твоих видео услышал про возможность работы с базой SQL, в PHP это очень удобно для хранения данных, хочу и здесь подключить БД.
    Когда планируешь сделать этот урок :) ?

  • @Pavliusik
    @Pavliusik 9 років тому

    А еще, прикрепи к урокам фаил с написанным кодом.

  • @ОлексійСлєпченко-т5п

    Добрый день.
    Как с помощью VBA сделать из двух тегов один для парсера цены товара с сайта? Пример:
    8
    73
    грн
    Если использовать действие HTML Взять цену товара v.2 , то программа выдает тег 8 , а 73 нет.
    Как их объединить? Очень нужна помощь.

  • @debasher
    @debasher 8 років тому

    Предлагаю свой вариант :)
    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

    • @debasher
      @debasher 8 років тому

      ***** Предлагаю Вам попробовать расширить функционал, вернее проверить, как будет вести себя функция при указании диапазона ячеек, если автоматом понимает круто, а если нет, предполагаю там нужно будет использовать циклы на основании начала и конца диапазона соответственно, но было бы очень интересно увидеть реализацию!) Кстати по поводу массивов скажу, что дело гиблое если речь идет об очень больших значениях, например если в Вашей функции использовать ссылку на ячейку с 1.000.000 знаков, думаю Вы понимаете, какие будут идти глюки, кроме того может просто вылететь overflow, что зависит уже от объема ОЗУ.

    • @debasher
      @debasher 8 років тому

      ***** так как нет другой связи пишу сюда. Мне бы очень хотелось увидеть уроки о динамическом создании элементов интерфейса, то есть исп. UserForm и добавление контроллеров в цикле и работа с этими контроллерами, такими как CheckBox, TextBox и т.д., помимо этого, как использовать события этих объектов, ведь если мы их просто динамически создадим, то событий у нас не будет, насколько мне известно тут нужно работать через классы. Думаю всем будет интересно) Также, как отправлять электронные письма и т.п. Премного благодарен за обратную связь.

  • @victornad9849
    @victornad9849 8 років тому +2

    Спасибо большое за уроки! Ждем с нетерпением новых.
    И еще у меня не получается конвертировать 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

    • @victornad9849
      @victornad9849 8 років тому

      +Rom Scher спасибо за скорый ответ.
      Я перепроверил - С в латинице, и все равно перепрыгивает.

    • @victornad9849
      @victornad9849 8 років тому

      +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, " ", "")

  • @СергейГладков-т4ы
    @СергейГладков-т4ы 9 років тому

    Спасибо за уроки! Скажите, существует ли подробный справочник по всем функциям, объектам и т.д. VBA? Понимаю, что есть встроеная справка, но я в английском не силен...

  • @iknowrus5229
    @iknowrus5229 9 років тому

    Спасибо за уроки. Все круто. Как сделать веб-запрос с вводом пароля?Т.е. При запуске запроса, автоматом вводится логин и пароль на сайте, и происходит импорт данных

  • @extrafant03
    @extrafant03 7 років тому +1

    А почему у меня не запускается пошаговая отладка как у Вас в видео? Офис у меня 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 ни массив...ничего

    • @rusrc
      @rusrc  7 років тому +2

      Функцию нельзя запустить по умолчанию как процедуру. Если хотите протрассировать функцию вызовите её в процедуре. Т.е.
      sub Test()
      getNumberFromString("")
      endsub
      В locals видны переменные только текущего контекста. Т.е. если вы внутри функции то увидите её переменные в окне Locals.

    • @Максим-ч7г2у
      @Максим-ч7г2у 7 років тому

      Kursoft почему при трассировке на массиве выскакивает ошибка что вне диапазона хотя сама функция работает?

  • @Максим-ч7г2у
    @Максим-ч7г2у 7 років тому

    почему при трассировке на массиве redim выскакивает ошибка что вне диапазона хотя сама функция работает? Lenght в locals не выводит значение

    • @rusrc
      @rusrc  7 років тому

      Видимо вы пытаетесь обратиться к индексу которого не существует. Может быть ваш массив имеет длину = 0. Проверьте инструкцию ReDim

    • @Максим-ч7г2у
      @Максим-ч7г2у 7 років тому

      Kursoft ругается на lenght в цикле for, я так понимаю при трассировке lenght не читается

    • @rusrc
      @rusrc  7 років тому

      Читается, замените Strings.Len(sStr) на просто например 5 возможно sStr пустая

    • @Максим-ч7г2у
      @Максим-ч7г2у 7 років тому

      Kursoft для трассировки функция вызывается sub test, где аргументу sStr присваивается пустое значение(getnumber (“”)) в итоге получается что sStr пустое и соответственно lenght не читается. Если же функция задается с листа, то все работает. Как у вас на видео получается присвоить значение аргументу при трассировке и без sub test?