Работа с умной таблицей на VBA. Часть 2

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 พ.ย. 2024
  • ► Доступ к БЕСПЛАТНЫМ урокам - lk.1excel.ru/
    ► Продвинутый Курс по Excel - www.1excel.ru/...
    ► Макросы и VBA в Excel -1excel.ru/maga...
    Урок 2. Работа с Умной таблицей на VBA
    В данном уроке продолжаем работать с умной таблицей и кодом VBA. Учимся добавлять новые записи в таблицу через пользовательскую форму (UserForm)
    Easy Excel - ПОЛНОЕ и ПОДРОБНОЕ обучение программы Excel для новичков и практиков!
    Подписка на канал Easy Excel: / easyexcellesson

ความคิดเห็น • 39

  • @Versie2007
    @Versie2007 8 ปีที่แล้ว +6

    Очень толково! Заезжанную тему раскрыть через VBA -- неожиданно. Надеюсь учения VBA продолжатся

  • @БорисМорозов-е7г
    @БорисМорозов-е7г 6 หลายเดือนก่อน

    Спасибо очень интересно и полезно. Могли бы Вы подсказать как сортировать умную таблицу скажем по времени или по другому столбцу?

  • @dmprog1671
    @dmprog1671 7 ปีที่แล้ว +3

    мои 2 копейки 8)))
    1) удобнее в использовании переменные с именами, начинающимися с маленькой буквы, да и в большинстве языков программирования так принято.
    2) даже если язык (бэйсик) позволяет, лучше не давать переменным имена их типов:
    ' плохой стиль
    Dim ListRow as ListRow
    ' хороший стиль
    Dim rows as ListRow
    ' или, если надо обозначить что переменная хранит List
    Dim listRows as ListRow

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว +4

      Да, вы правы, это принято во многих языках. Но у меня 2 причины писать с большой. Во-первых мне лично нравится когда и название переменных и тип переменных начинаются с первой большой буквы. А во-вторых, так как я могу сказать, что я относительно еще новичок в программировании, то пишу с большой буквы, проявляя к ним уважение. А когда стану гуру (если стану), то начну показывать переменным кто тут главный и буду писать их имена с маленькой буквы. =)

    • @alexlotion5055
      @alexlotion5055 7 ปีที่แล้ว +1

      Паш. объясни пожалуйста как добавить TDPicker в Excel 2016 на Win 10, или как обойтись без него

    • @СергейТравкин-ь1щ
      @СергейТравкин-ь1щ 5 ปีที่แล้ว

      @@easyexcellesson Для большинства Вы уже гуру, но правила лучше соблюдать =(

  • @GOLD-dw1ik
    @GOLD-dw1ik ปีที่แล้ว

    Здравствуйте, Павел!вы гениальный! Я восхищена Вами. Спасибо, что учите нас!
    Павел, у меня вопрос:
    Имеется уведомление о прибытии иностранного гражданина. ( заполнение по букве в клеточке, клеточки на рассточии). Как можно из таблиуы эксель сделать заполнение этого уведомлентя? Хочется автоматизировать этот процесс. Заранее спасибо .

    • @easyexcellesson
      @easyexcellesson  ปีที่แล้ว +1

      Здравствуйте! Нужен ваш пример в файле, пришлите, подскажу - info@1excel.ru

    • @GOLD-dw1ik
      @GOLD-dw1ik ปีที่แล้ว

      @@easyexcellesson хочу приобрести ваш курс.я приобрету и скину файл.

  • @Kost150rus
    @Kost150rus 2 ปีที่แล้ว

    А можно ли добавить чтобы поле менеджер или поле категория заполнялось из определенного списка, т.е. нельзя писать произвольное?

  • @khanandrey8491
    @khanandrey8491 4 ปีที่แล้ว

    Здравствуйте. Можно скачать календарь на взломанный 2019? Или можно просто оставить txb?

  • @МарияК-м9п
    @МарияК-м9п 7 ปีที่แล้ว

    Добрый день! Подскажите пожалуйста, как установить календарь на версию 2010 года?

  • @ВладимирРодякин
    @ВладимирРодякин 3 ปีที่แล้ว

    Здравствуйте! Выдает ошибку - shgeneral = nothing

  • @alvares31
    @alvares31 6 ปีที่แล้ว

    почему то отсутствует userform на макбуке

  • @timnorov
    @timnorov 7 ปีที่แล้ว

    добрый день, подскажите пожалуйста как из формы с listbox добавлять в умную таблицу выбранные данные? спасибо

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว

      получить данные из listbox можно только при помощи цикла. У Листбокса есть свойство List, которое возвращает элемент списка стоящий на пересечении указанных строки и столбца - List (row, column). Посмотрите, как работать с листбоксом в цикле и со свойством List

    • @timnorov
      @timnorov 7 ปีที่แล้ว

      Спасибо Вам большое за скорый ответ. Ценю Вашу работу и отзывчивость. Уже не первый раз быстро отвечаете на потребность своих подписчиков. Я признаюсь, я только делаю свои первые шаги в VBA и конечно делаю это неправильно, а именно не начав с азов, стараюсь брать сложные задачи на себя. Тем не менее, я с задачами зачастую справляюсь, а вот как работает каждый процесс не понимаю. Можно еще Вас побеспокоить? Мне буквально нужен ответ Ваш, даже не помощь. У меня такая ситуация: я хочу создать master.xlsm, который будет "собирать" определенные значения с других файлов и производить с ними манипуляции. Суть вопроса в том, может ли VBA сделать следующее: в мастер файле, на одном из листе будет большой список товаров, этот список я привяжу к listbox, который будет всплывать при открытии файла. Пользователь выбирает из этого listbox-а определенные товары, нажимает "рассчитать", и VBA должен просмотреть все файлы в определенной папке с заказами, не открывая их, найти выбранные данные, извлечь цену на выбранные данные, сложить, поделить и в итоге высветить в мастер файле msgbox с итогом калькуляции по каждому файлу-заказу? Резюмируя, мой вопрос в том, может ли VBA произвести калькуляцию в уме или же придется сначала подтягивать данные из каждого заказа в мастер файл, а потом чтобы он считал? Спасибо большое.

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว +1

      В вашем случае файлы придется все равно открывать. Excel не сможет взять данные, если файлы закрыты. Но вы их можете открыть в фоновом режиме (Application.ScreenUpdating = False), тогда пользователь не будет видеть эти файлы. Только потом их надо также закрыть и включить обновление экрана (Application.ScreenUpdating = True). А сами данные из файлов можно загнать в массив и потом с ними произвести необходимые вычисления. Посмотрите, как работать с массивом.

    • @timnorov
      @timnorov 7 ปีที่แล้ว

      Я это все понимаю, вопрос в другом. Я правильно понимаю, что в уме VBA калькуляцию не сможет произвести и все равно придется с каждого файла подтягивать данные в массив и потом производить калькуляцию?

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว

      А что значит "в уме"? Не совсем понимаю. Сложно говорить, когда нет понимания ваших файлов и расчетов, которые вы хотите делать. Но можно просто загонять данные в переменные и с ними производить вычисления, если у вас такое возможно. Тогда массив не нужен

  • @СергейТравкин-ь1щ
    @СергейТравкин-ь1щ 5 ปีที่แล้ว

    Set ShGeneral = ThisWorkbook.Worksheets("Название листа")
    Как заменить Worksheets("Лист1") , где лист1 - это его название, ан не имя?

    • @easyexcellesson
      @easyexcellesson  5 ปีที่แล้ว

      Названием листа может быть переменная. Ее можно легко заменить

    • @СергейТравкин-ь1щ
      @СергейТравкин-ь1щ 5 ปีที่แล้ว

      @@easyexcellesson там возникает ряд сложностей. Сделал так.
      ThisWorkbook.Activate 'строка не обязательна если работать в одной книги
      Set Tab_1 = Лист1.ListObjects("Таблица1")
      Вамблагодарность и лайк =)

  • @timnorov
    @timnorov 7 ปีที่แล้ว

    Здравствуйсте. Сделал простую умную таблицу из двух столбиков. Создал форму с Listbox-ом с мультивыбором, где подтягивается перечень продуктов. К кнопке прописал код, но при нажатии на кнопку добавляется одна пустая строка в таблицу, что я сделал не так?
    Private Sub CommandButton1_Click()
    Dim SheetGen As Worksheet
    Dim ListObj As ListObject
    Dim ListRow As ListRow
    Set SheetGen = ThisWorkbook.Worksheets("Лист1")
    Set ListObj = SheetGen.ListObjects("Основная_tb")
    Set ListRow = ListObj.ListRows.Add
    If GeneralForm.ListBox1.Selected(x) Then
    ListRow.Range(1) = GeneralForm.ListBox1.Value
    End If
    End Sub
    Спасибо большое за отзывчивость и помощь

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว

      Данные из листбокса, как я вам писал, можно получить только при помощи цикла и свойства List.
      В вашем случае следует написать вот так:
      For i = 0 To GeneralForm.ListBox1.ListCount - 1
      If GeneralForm.ListBox1.Selected(i) Then
      ListRow.Range(1) = GeneralForm.ListBox1.List(i)
      Next
      а вот такая конструкция List(i, 1) вернет вам второй столбец листбокса. Первый столбец в листбоксе нулевой
      Свернуть

    • @timnorov
      @timnorov 7 ปีที่แล้ว

      отлично, добавил End If, но вот добавляет ТОЛЬКО одну последнюю выбранную запись из многочисленных выбранных в листбоксе(

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว

      а как вы выбираете несколько строк в листбоксе? По-моему выбрать можно только одну строку? ВОт она и должна добавляться. Если не добавляется выбранная строка, то где-то скорее ошибка.

    • @timnorov
      @timnorov 7 ปีที่แล้ว

      Easy Excel в свойствах листбокса есть пункт multiselect

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว

      А, вы про это?! Данная конструкция работает только с выделением одной строки. С таким вариантом еще не сталкивался. Попробуйте погуглите данный вопрос.

  • @АлексейСоков-ь8и
    @АлексейСоков-ь8и 3 ปีที่แล้ว

    2021

  • @Мила-8765
    @Мила-8765 7 ปีที่แล้ว

    здравствуйте. спасибо за видио. у меня возникла проблема: я делала вместе с вами, но когда писала ListRow.Range(1)=GeneralForm.txb.date.Value у меня нет "Value" Что делать?

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว

      Проверьте правильность написания текстового поля после ввода GeneralForm. После точки выбирайте из выпадающего списка ваш textbox. Скорее всего вы просто ошиблись в его названии

    • @Мила-8765
      @Мила-8765 7 ปีที่แล้ว

      А может быть такое что его нет в списке и его нужно добавить или это функция всегда есть

    • @Мила-8765
      @Мила-8765 7 ปีที่แล้ว

      Срасибо

    • @easyexcellesson
      @easyexcellesson  7 ปีที่แล้ว

      Если вы не дали название этому полю, то его в списке не будет. Присвоение имени текстовому полю надо делать обязательно. Ну в крайнем случае, использовать название по умолчанию, что я не советую!

    • @Мила-8765
      @Мила-8765 7 ปีที่แล้ว

      Спасибо