Объектные переменные: Пример с Workbook - Worksheet - Range - Новый курс VBA (4)

Поделиться
HTML-код
  • Опубликовано: 17 июл 2020
  • Ссылка на файлы для упражнения: drive.google.com/drive/folder...
    Привет! В сегодняшнем видео мы рассмотрим второй тип переменных в VBA - объектные перемененные. Поэтому мы узнаем, как объявлять и «привязывать» объектные переменные и как их применять в своём коде.
    В этом видео мы будем фокусироваться на основных объектах в Excel - Workbooks (рабочие книги), Worksheets (рабочие листы) and Ranges (ячейки, или, иначе говоря, области ячеек в VBA).
    Помимо этого, в этом видео мы также рассмотрим один из основных функционалов окна Immediate Window в VBA - Debug.Print: вывод значений в этом окне, который помогает тестировать и отлаживать программы в VBA.
    Ну и как обычно, в конце этого видео тебя ожидает практическое упражнение для закрепления полученных новых знаний.
    Приятного просмотра! 😊

Комментарии • 62

  • @user-zh6gh6nl3n
    @user-zh6gh6nl3n 2 года назад +5

    Идеальная речь! Восхитительная структура подачи материала... Как елей на уши.. Материал ложится настолько правильно и легко... Спасибо большое за Ваш труд!!! А я еще слушаю на 2х... И это отдельная сказка.. Хочется еще и еще)

  • @user-wk2jm3eh8h
    @user-wk2jm3eh8h 3 года назад +10

    ОГРОМНОЕ СПАСИБО за то что вы делаете. Вы очень доступным и понятным языком доносите материал для зрителя. Пожалуйста, продолжайте это делать, поскольку, это очень сильно помогает в обучении.

  • @Max-fe4wr
    @Max-fe4wr Год назад +1

    Благодарю за ваши старания, материал, подача и доля юмора, просто на высоте.

  • @pavelpruss5220
    @pavelpruss5220 3 года назад +4

    Контент реально полезный, я прям по полочкам все разбираю, но думаю кто базово английский не знает тяжелей всех приходится 😥

  • @olgamaximenko3763
    @olgamaximenko3763 3 года назад +9

    Браво, Маэстро! Превосходное качество изложения! Я тоже хочу освоить VBA , но в моём преклонном возрасте заходит только на скорости 0,75 : )))

  • @user-ye2mm6ov6li
    @user-ye2mm6ov6li 2 года назад

    Шикарное видео. Отличный курс. Огромное вам спасибо

  • @shkrobavasyl2122
    @shkrobavasyl2122 2 года назад +1

    Спасибо, очень увлекательно узнавать новое! также понравилось решение с замедлением, для выделения смысла высказывания ;)

  • @georgekim1604
    @georgekim1604 Год назад

    Спасибо Большое за подробную инфо по уроку.
    сделал решение не в первом VBA Task 3 WorkbookFrom - файле, как в конце видео урока,
    а во втором файле VBA Task 3 WorkbookTo - используя ThisWorkBook и полный путь первого файла!

  • @SamSambl4
    @SamSambl4 4 года назад +2

    Спасибо за труд

  • @user-xi4do2my9s
    @user-xi4do2my9s 3 года назад +1

    Спасибо 🤗

  • @jonik_s526
    @jonik_s526 2 года назад

    Спасибо!

  • @user-fh9ot4pl2v
    @user-fh9ot4pl2v 3 года назад +16

    Спасибо за урок!
    У меня похоже vba по другому настроен.
    При указании адреса книги нужно обязательно указывать формат. т.е. "Book1.xlsm". У вас же просто "Book1".

    • @dmitriybukharin662
      @dmitriybukharin662 2 года назад

      у меня также. Вы нашли как убрать расширение из названия?

    • @sladkaia_vita3864
      @sladkaia_vita3864 6 месяцев назад

      Да у меня таже проблема ((

  • @enott
    @enott Год назад +2

    Названия переменный значительно сложней в написании значения переменной :)

  • @serhiikoliada7169
    @serhiikoliada7169 3 года назад +4

    У меня в упражнении, где определялись названия активных книги, листа и адреса активной ячейки, когда выбрана ячейка в Книге2 - в сообщении упорно показывало имена и адрес ячейки в Книге1. Присмотревшись, обнаружил, что Книга2 не отображается в окне Project, хотя реально была открыта. Долго не мог понять почему. Оказывается я открывал Книгу2 не комбинацией клавиш Ctrl + N, а нажимая ярлык Excel. И таким образом открывал новый экземпляр приложения Excel.

  • @agnich3590
    @agnich3590 10 месяцев назад

    Спасибо за курс, очень крутой, правда после просмотра ответа как то даже грустновато стало, веть я не так понял задание и потратил 1-1.5, попытки понять и дополнительное изучение циклов, что бы написать код, который перенёс сражу всю таблице из from в To, как бы получилось, но как бы так грустно, что такое лёгкое задание было, а я его сам переусложнил

  • @user-nj9bi5ld8j
    @user-nj9bi5ld8j Год назад +1

    Спасибо! с интересом изучаю ваш курс. Однако, задание к этому уроку некорректно сформулировано, т.к. в нем сказано, что нужно перенести значения из таблицы в соответствующие ячейки, но не сказано, что я чейки нужно выбирать поочередно и каждый раз запускать макрос. Такое решение никак не следует из задания.

  • @nikolairohn6874
    @nikolairohn6874 3 года назад +2

    Контент отличный. Очень интересно.
    Но не совсем понятное решение поставленной задачи в конце видео. Если бы листы в книгах имели разные имена, то этот код не работал бы. Ведь так идет запрос из активных ячеек, а в коде указывается книга с пустыми ячейками. Я правильно понимаю?

  • @Deidarchik94
    @Deidarchik94 3 года назад +3

    Можно ли назвать моё решение верным?
    Sub taskSolution()
    Dim wbFrom As Workbook, wbTo As Workbook
    Set wbFrom = Workbooks("VBA Task 3 WorkbookFrom - Bill K.xlsm")
    Set wbTo = Workbooks("VBA Task 3 WorkbookTo - Bill K.xlsm")
    Dim orderlist As Variant
    orderlist = wbFrom.Worksheets("Orders").Range("B3:J13")
    wbTo.Worksheets("Orders").Range("B3:J13") = orderlist
    End Sub

    • @alexandersotnikov2149
      @alexandersotnikov2149 2 года назад +1

      На мой взгляд: да, конечно! Оно работает так, как должно было работать по заданию. Без копи паста и функций Value.

  • @SV-13
    @SV-13 2 года назад +3

    Не помешало бы намекнуть, как осуществить копирование всей таблицы (или выделенного диапазона),
    а не выборочно отдельных ячеек...

  • @alex-em4em
    @alex-em4em 6 месяцев назад

    Готово

  • @user-yq1sx3wi5n
    @user-yq1sx3wi5n Год назад

    Спасибо! В отличие от ваших примеров, мне приходится прописывать имя воркбука вместе с расширением Workbooks("VBA_Test.xlsm"), без расширения он не видит этот воркбук, это где-то отключается?

  • @user-hd8oy9xp8m
    @user-hd8oy9xp8m 3 года назад

    В чем разница между старым курсом по VBA Excel и этим новым плейлистом

  • @hotelrus
    @hotelrus 2 года назад

    Спасибо большое за уроки, очень познавательно. У меня проблема на 15:32, после клика на + Excel подвисает.

    • @user-ks4in7km4v
      @user-ks4in7km4v Год назад

      Такая же проблема. Закрыл, открыл заново и все заработало

  • @user-lm4ub6me9h
    @user-lm4ub6me9h 8 месяцев назад

    CTR+N

  • @user-lm4ub6me9h
    @user-lm4ub6me9h 8 месяцев назад

    Ctr+N 2-00

  • @user-tx3qf7hb2y
    @user-tx3qf7hb2y Год назад

    Добрый день!
    Могли бы Вы подсказать почему разный UsedRange?
    При таком написании кода UsedRange правильный
    Set wb = ThisWorkbook
    Set ws = wb.Worksheets(1)
    Set wsActiveSheet = wb.ActiveSheet
    Set MyRange = ActiveSheet.UsedRange
    а при таком неправильный
    Set wb = ThisWorkbook
    Set ws = wb.Worksheets(1)
    Set wsActiveSheet = wb.ActiveSheet
    Set MyRange = wsActiveSheet.UsedRange

  • @user-qn5by5iv7u
    @user-qn5by5iv7u 3 года назад +2

    2021

  • @user-qg2nv7vv4x
    @user-qg2nv7vv4x Год назад

    Добрый день.
    Выдает ошибку Run-time error 9 subscript out of range
    Sub learningObjectVariables()
    Dim wbOurWorkbook As Workbook
    Set wbOurWorkbook = Workbooks("Book1")
    помечает желтым последнюю строчку, что не так ?

    • @user-vm1oo7cl1c
      @user-vm1oo7cl1c Год назад

      возможно у вас русский офис. пишите "книга№" по русски.

  • @user-bh8td7vo4k
    @user-bh8td7vo4k 6 месяцев назад

    У меня Msgbox показывает результат False (в чем ошибка)

  • @user-jn1mz3uh2t
    @user-jn1mz3uh2t Год назад

    я бы хотел позаниматься с вами программированием в ексель за плату, если интересно, напишите, может уже неактуально для вас?

  • @KyklaKolduna
    @KyklaKolduna 2 года назад +2

    Попыталась решить максимально по уроку, вышло так:
    Dim wsfrom As Range
    Set wsfrom = Workbooks("VBA Task 3 WorkbookFrom - Bill K.xlsm").Worksheets("Orders").Range("B3:J13")
    Dim wsto As Range
    Set wsto = Workbooks("VBA Task 3 WorkbookTo - Bill K.xlsm").Worksheets("Orders").Range("B3:J13")
    wsto.Value = wsfrom.Value
    Но Value мы не проходили и я написала wsto.Range("B3:J13") = wsfrom.Range("B3:J13") Ничего конечно не получалось.

    • @yuliyamoscowregion5196
      @yuliyamoscowregion5196 Год назад

      я тоже пыталась по уроку..но решение другое (

    • @user-tj9qk3cf4w
      @user-tj9qk3cf4w Год назад

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

    • @user-wb8om5it2f
      @user-wb8om5it2f Год назад

      А что именно у вас не получилось? Я повторил Ваше решение - работает.

    • @KyklaKolduna
      @KyklaKolduna Год назад

      @@user-wb8om5it2f
      wsto.Range("B3:J13") = wsfrom.Range("B3:J13") - первая попытка скопировать данные из файла в файл (не работает)
      wsto.Value = wsfrom.Value - вторая попытка оказалась рабочей
      На тот момент я не знала ни Value, ни Copy, пыталась написать как могла)

  • @user-mk4hf3zd3w
    @user-mk4hf3zd3w 4 года назад +10

    а зачем так усложнять решение задания?) можно же в 3 строки всего сделать и без копипаста (5 с указанием типа данных)
    Dim DataFrom As Object
    Dim DataTo As Object
    Set DataFrom = Workbooks(1).Worksheets(1).Range("B3:J13")
    Set DataTo = Workbooks(2).Worksheets(1).Range("B3:J13")
    DataTo.Value = DataFrom.Value

    • @user-nz3rs8us6u
      @user-nz3rs8us6u 3 года назад +9

      Тоже думал, что автор приведет подобный пример. Однако, он решил подробней разобрать способ работы с ActiveSheet и ActiveCell. В итоге его пример получился в этом плане даже интересней (хотя и подобный краткий код тоже было полезно разобрать). И, видимо, твое сообщение также было адресовано к зрителям, как возможное решение (иначе зачем оно здесь, когда Билял и без нас это все прекрасно умеет), так что следовало вместо "Object" написать "Range", так было бы более грамотно и понятно. Не забывай, что данный плейлист в большей степени ориентирован на новичков VBA.

    • @user-rm7ds6xf3l
      @user-rm7ds6xf3l 2 года назад +1

      Потому что явное указание позволяет избежать ошибок, что актуально на больших проектах. И работает быстрее. Приведенный Вами код небезопасен. Можно спокойно выстрелить себе в ногу.

    • @semforever1979
      @semforever1979 2 года назад

      Русским по белому было объяснено, почему Индекс книги (листа) не желательно использовать. Внимательнее слушайте.

    • @naughtyfins6810
      @naughtyfins6810 Год назад +2

      мне как новичку непонятно, откуда взялось "object" в этом коде, и что оно значит, в каких случаях надо использовать.
      Также непонятно, почему, раз мы указали свойство "object", то нет сокращения перед "DataFrom" и "DataTo", например, obDataFrom.

  • @user-tx2jx8pn7h
    @user-tx2jx8pn7h 9 месяцев назад

    13:15 Переменная в итоге будет привязана. БУДЕТ ПРИВЯЗАНА...🤣🤣🤣

  • @vladigulaev6560
    @vladigulaev6560 2 года назад

    не знаю что на компе пишу workbooks("book4") - pishet out of range , если индекс то норм , также на ноуте название пишу все работает , хотя все открыто .

    • @SNS_2104
      @SNS_2104 2 года назад +1

      я столкнулась с такой же проблемой. Добавьте в название расширение файла. например, ("book4.xlsx") .. Так работает. Я еще не разобралась, почему на одних компах нужно обязательно добавлять расширение файла, а на других нет.. Возможно, где то в настройках что-то поменять нужно...

  • @ivansokolov4211
    @ivansokolov4211 2 года назад

    Что значит, листы должны быть доступными? У меня такая ошибка и выводиться.

    • @glebkravtsov2385
      @glebkravtsov2385 2 года назад

      файл VBA Task 3 WorkbookTo - Bill K не скачивать, а новую книгу2 создать, тогда все проходит

    • @ivansokolov4211
      @ivansokolov4211 2 года назад

      @@glebkravtsov2385 спасибо!

  • @Viktorxxx86
    @Viktorxxx86 Год назад

    Нужно разбить видео на более короткие с практикой минут по 7-10 , так как за эти 20 минут манипуляций теряется связь , и для выполнения конечного задания уже становится сложно вспомнить что было в начале, хоть и было легким. Лучше разбить на легкие короткие задания и потом крупное итоговое .. так к выполнению можно подойти с уже наработанной практикой в 2-3 задания, а не пересматривать с начала несколько раз составляя макрос и вспоминая что куда создавая кашу в голове.

  • @Rusia-16
    @Rusia-16 Год назад +1

    Автор, почему ты не используешь русский язык ? Все таблицы и названия листов на латинице , из за этого возникает путаница ! Приходится догадываться, это команда VBA или какое то выдуманное название ?

  • @glazastjy
    @glazastjy 2 года назад

    Да почему у тебя все задания на английском! Раздражает до жути!

  • @user-tx2jx8pn7h
    @user-tx2jx8pn7h 9 месяцев назад

    Проще говоря, автор решил следующим образом:
    Sub n4()
    Dim C As Range
    Set C = Workbooks("VBA-To").Worksheets(ActiveSheet.name).Range(ActiveCell.Address)
    C.Value = ActiveCell.Value
    End Sub

  • @user-op5fc9lp5w
    @user-op5fc9lp5w Год назад

    НА ВСЯКИЙ СЛУЧАЙ
    Sub DoLOOPExitDo2()
    Dim DZ As String
    Dim i As Long
    i = 1
    Do Until DZ = "OK" Or DZ = "ok" 'Англ язык
    DZ = InputBox("НЕ пишите OK и цикл повторится" & vbNewLine _
    & "Цикл уже повторился " & i & " раз(а)")
    i = i + 1

    Loop
    End Sub