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

  Рет қаралды 41,525

Билял Хасенов – Excel, VBA & More

Билял Хасенов – Excel, VBA & More

Күн бұрын

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

Пікірлер: 62
@Алена-ч8п6х
@Алена-ч8п6х 3 жыл бұрын
Идеальная речь! Восхитительная структура подачи материала... Как елей на уши.. Материал ложится настолько правильно и легко... Спасибо большое за Ваш труд!!! А я еще слушаю на 2х... И это отдельная сказка.. Хочется еще и еще)
@user-wk2jm3eh8h
@user-wk2jm3eh8h 3 жыл бұрын
ОГРОМНОЕ СПАСИБО за то что вы делаете. Вы очень доступным и понятным языком доносите материал для зрителя. Пожалуйста, продолжайте это делать, поскольку, это очень сильно помогает в обучении.
@Max-fe4wr
@Max-fe4wr Жыл бұрын
Благодарю за ваши старания, материал, подача и доля юмора, просто на высоте.
@pavelpruss5220
@pavelpruss5220 3 жыл бұрын
Контент реально полезный, я прям по полочкам все разбираю, но думаю кто базово английский не знает тяжелей всех приходится 😥
@olgamaximenko3763
@olgamaximenko3763 3 жыл бұрын
Браво, Маэстро! Превосходное качество изложения! Я тоже хочу освоить VBA , но в моём преклонном возрасте заходит только на скорости 0,75 : )))
@shkrobavasyl2122
@shkrobavasyl2122 2 жыл бұрын
Спасибо, очень увлекательно узнавать новое! также понравилось решение с замедлением, для выделения смысла высказывания ;)
@georgekim1604
@georgekim1604 Жыл бұрын
Спасибо Большое за подробную инфо по уроку. сделал решение не в первом VBA Task 3 WorkbookFrom - файле, как в конце видео урока, а во втором файле VBA Task 3 WorkbookTo - используя ThisWorkBook и полный путь первого файла!
@SamSambl4
@SamSambl4 4 жыл бұрын
Спасибо за труд
@ЕгорМельчаев-щ7д
@ЕгорМельчаев-щ7д 3 жыл бұрын
Спасибо за урок! У меня похоже vba по другому настроен. При указании адреса книги нужно обязательно указывать формат. т.е. "Book1.xlsm". У вас же просто "Book1".
@dmitriybukharin662
@dmitriybukharin662 2 жыл бұрын
у меня также. Вы нашли как убрать расширение из названия?
@sladkaia_vita3864
@sladkaia_vita3864 9 ай бұрын
Да у меня таже проблема ((
@user-ye2mm6ov6li
@user-ye2mm6ov6li 2 жыл бұрын
Шикарное видео. Отличный курс. Огромное вам спасибо
@enott
@enott Жыл бұрын
Названия переменный значительно сложней в написании значения переменной :)
@user-xi4do2my9s
@user-xi4do2my9s 3 жыл бұрын
Спасибо 🤗
@Deidarchik94
@Deidarchik94 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 жыл бұрын
На мой взгляд: да, конечно! Оно работает так, как должно было работать по заданию. Без копи паста и функций Value.
@serhiikoliada7169
@serhiikoliada7169 3 жыл бұрын
У меня в упражнении, где определялись названия активных книги, листа и адреса активной ячейки, когда выбрана ячейка в Книге2 - в сообщении упорно показывало имена и адрес ячейки в Книге1. Присмотревшись, обнаружил, что Книга2 не отображается в окне Project, хотя реально была открыта. Долго не мог понять почему. Оказывается я открывал Книгу2 не комбинацией клавиш Ctrl + N, а нажимая ярлык Excel. И таким образом открывал новый экземпляр приложения Excel.
@nikolairohn6874
@nikolairohn6874 3 жыл бұрын
Контент отличный. Очень интересно. Но не совсем понятное решение поставленной задачи в конце видео. Если бы листы в книгах имели разные имена, то этот код не работал бы. Ведь так идет запрос из активных ячеек, а в коде указывается книга с пустыми ячейками. Я правильно понимаю?
@SV-13
@SV-13 2 жыл бұрын
Не помешало бы намекнуть, как осуществить копирование всей таблицы (или выделенного диапазона), а не выборочно отдельных ячеек...
@АннаТомилина-б1п
@АннаТомилина-б1п Жыл бұрын
Спасибо! с интересом изучаю ваш курс. Однако, задание к этому уроку некорректно сформулировано, т.к. в нем сказано, что нужно перенести значения из таблицы в соответствующие ячейки, но не сказано, что я чейки нужно выбирать поочередно и каждый раз запускать макрос. Такое решение никак не следует из задания.
@agnich3590
@agnich3590 Жыл бұрын
Спасибо за курс, очень крутой, правда после просмотра ответа как то даже грустновато стало, веть я не так понял задание и потратил 1-1.5, попытки понять и дополнительное изучение циклов, что бы написать код, который перенёс сражу всю таблице из from в To, как бы получилось, но как бы так грустно, что такое лёгкое задание было, а я его сам переусложнил
@Алексей-ф3и7р
@Алексей-ф3и7р 4 жыл бұрын
а зачем так усложнять решение задания?) можно же в 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
@ДенисБогатырев-э7к
@ДенисБогатырев-э7к 4 жыл бұрын
Тоже думал, что автор приведет подобный пример. Однако, он решил подробней разобрать способ работы с ActiveSheet и ActiveCell. В итоге его пример получился в этом плане даже интересней (хотя и подобный краткий код тоже было полезно разобрать). И, видимо, твое сообщение также было адресовано к зрителям, как возможное решение (иначе зачем оно здесь, когда Билял и без нас это все прекрасно умеет), так что следовало вместо "Object" написать "Range", так было бы более грамотно и понятно. Не забывай, что данный плейлист в большей степени ориентирован на новичков VBA.
@user-rm7ds6xf3l
@user-rm7ds6xf3l 2 жыл бұрын
Потому что явное указание позволяет избежать ошибок, что актуально на больших проектах. И работает быстрее. Приведенный Вами код небезопасен. Можно спокойно выстрелить себе в ногу.
@semforever1979
@semforever1979 2 жыл бұрын
Русским по белому было объяснено, почему Индекс книги (листа) не желательно использовать. Внимательнее слушайте.
@naughtyfins6810
@naughtyfins6810 Жыл бұрын
мне как новичку непонятно, откуда взялось "object" в этом коде, и что оно значит, в каких случаях надо использовать. Также непонятно, почему, раз мы указали свойство "object", то нет сокращения перед "DataFrom" и "DataTo", например, obDataFrom.
@KyklaKolduna
@KyklaKolduna 3 жыл бұрын
Попыталась решить максимально по уроку, вышло так: 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 Жыл бұрын
я тоже пыталась по уроку..но решение другое (
@ДенисЯковлев-ю8ч
@ДенисЯковлев-ю8ч Жыл бұрын
а я то думал, почему, когда я приравниваю только по одной ячейке все работает, а как указываю диапазон - ничего не происходит.
@ИгорьГерасименко-у3ц
@ИгорьГерасименко-у3ц Жыл бұрын
А что именно у вас не получилось? Я повторил Ваше решение - работает.
@KyklaKolduna
@KyklaKolduna Жыл бұрын
@@ИгорьГерасименко-у3ц wsto.Range("B3:J13") = wsfrom.Range("B3:J13") - первая попытка скопировать данные из файла в файл (не работает) wsto.Value = wsfrom.Value - вторая попытка оказалась рабочей На тот момент я не знала ни Value, ни Copy, пыталась написать как могла)
@Математика5класс-о1ь
@Математика5класс-о1ь 11 ай бұрын
Ctr+N 2-00
@Математика5класс-о1ь
@Математика5класс-о1ь 11 ай бұрын
CTR+N
@СергейКостычев-х1о
@СергейКостычев-х1о Жыл бұрын
Спасибо! В отличие от ваших примеров, мне приходится прописывать имя воркбука вместе с расширением Workbooks("VBA_Test.xlsm"), без расширения он не видит этот воркбук, это где-то отключается?
@alex-em4em
@alex-em4em 9 ай бұрын
Готово
@hotelrus
@hotelrus 2 жыл бұрын
Спасибо большое за уроки, очень познавательно. У меня проблема на 15:32, после клика на + Excel подвисает.
@АлексейЗимарин-э4ч
@АлексейЗимарин-э4ч 2 жыл бұрын
Такая же проблема. Закрыл, открыл заново и все заработало
@user-tx2jx8pn7h
@user-tx2jx8pn7h 11 ай бұрын
13:15 Переменная в итоге будет привязана. БУДЕТ ПРИВЯЗАНА...🤣🤣🤣
@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 жыл бұрын
2021
@user-hd8oy9xp8m
@user-hd8oy9xp8m 3 жыл бұрын
В чем разница между старым курсом по VBA Excel и этим новым плейлистом
@Viktorxxx86
@Viktorxxx86 Жыл бұрын
Нужно разбить видео на более короткие с практикой минут по 7-10 , так как за эти 20 минут манипуляций теряется связь , и для выполнения конечного задания уже становится сложно вспомнить что было в начале, хоть и было легким. Лучше разбить на легкие короткие задания и потом крупное итоговое .. так к выполнению можно подойти с уже наработанной практикой в 2-3 задания, а не пересматривать с начала несколько раз составляя макрос и вспоминая что куда создавая кашу в голове.
@РоманМарихин
@РоманМарихин Жыл бұрын
Добрый день. Выдает ошибку Run-time error 9 subscript out of range Sub learningObjectVariables() Dim wbOurWorkbook As Workbook Set wbOurWorkbook = Workbooks("Book1") помечает желтым последнюю строчку, что не так ?
@МалютаСкуратов-ж6ю
@МалютаСкуратов-ж6ю Жыл бұрын
возможно у вас русский офис. пишите "книга№" по русски.
@СергейЛиньков-в7ф
@СергейЛиньков-в7ф 9 ай бұрын
У меня Msgbox показывает результат False (в чем ошибка)
@СергейЩепилин
@СергейЩепилин Жыл бұрын
я бы хотел позаниматься с вами программированием в ексель за плату, если интересно, напишите, может уже неактуально для вас?
@ivansokolov4211
@ivansokolov4211 2 жыл бұрын
Что значит, листы должны быть доступными? У меня такая ошибка и выводиться.
@glebkravtsov2385
@glebkravtsov2385 2 жыл бұрын
файл VBA Task 3 WorkbookTo - Bill K не скачивать, а новую книгу2 создать, тогда все проходит
@ivansokolov4211
@ivansokolov4211 2 жыл бұрын
@@glebkravtsov2385 спасибо!
@vladigulaev6560
@vladigulaev6560 2 жыл бұрын
не знаю что на компе пишу workbooks("book4") - pishet out of range , если индекс то норм , также на ноуте название пишу все работает , хотя все открыто .
@SNS_2104
@SNS_2104 2 жыл бұрын
я столкнулась с такой же проблемой. Добавьте в название расширение файла. например, ("book4.xlsx") .. Так работает. Я еще не разобралась, почему на одних компах нужно обязательно добавлять расширение файла, а на других нет.. Возможно, где то в настройках что-то поменять нужно...
@user-tx2jx8pn7h
@user-tx2jx8pn7h 11 ай бұрын
Проще говоря, автор решил следующим образом: Sub n4() Dim C As Range Set C = Workbooks("VBA-To").Worksheets(ActiveSheet.name).Range(ActiveCell.Address) C.Value = ActiveCell.Value End Sub
@Rusia-16
@Rusia-16 2 жыл бұрын
Автор, почему ты не используешь русский язык ? Все таблицы и названия листов на латинице , из за этого возникает путаница ! Приходится догадываться, это команда VBA или какое то выдуманное название ?
@glazastjy
@glazastjy 3 жыл бұрын
Да почему у тебя все задания на английском! Раздражает до жути!
@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
@jonik_s526
@jonik_s526 2 жыл бұрын
Спасибо!
Свойства и Методы - Новый курс VBA (5)
11:45
Билял Хасенов – Excel, VBA & More
Рет қаралды 24 М.
Переменные и типы данных в VBA - Новый курс VBA (3)
26:22
Билял Хасенов – Excel, VBA & More
Рет қаралды 62 М.
POV: Your kids ask to play the claw machine
00:20
Hungry FAM
Рет қаралды 15 МЛН
escape in roblox in real life
00:13
Kan Andrey
Рет қаралды 71 МЛН
У ГОРДЕЯ ПОЖАР в ОФИСЕ!
01:01
Дима Гордей
Рет қаралды 8 МЛН
Dad gives best memory keeper
01:00
Justin Flom
Рет қаралды 25 МЛН
Excel VBA: Using Class Modules with Collections (5/5)
13:37
Excel Macro Mastery
Рет қаралды 70 М.
VBA для начинающих - Первые шаги - Новый курс VBA (2)
18:28
Билял Хасенов – Excel, VBA & More
Рет қаралды 117 М.
Excel VBA: The Magic of the Worksheet Change Event
14:24
Excel Macro Mastery
Рет қаралды 72 М.
Автозаполнение Формуляров и Документов на основе Excel
20:06
Билял Хасенов – Excel, VBA & More
Рет қаралды 197 М.
VBA Macro to Copy Data from Another Workbook in Excel
13:39
Excel Campus - Jon
Рет қаралды 642 М.
Подсветка текущей строки
8:46
Nikolay Pavlov
Рет қаралды 321 М.
POV: Your kids ask to play the claw machine
00:20
Hungry FAM
Рет қаралды 15 МЛН