Спасибо за подобные видео. Сам по образованию не программист, но в последнее время много приходится отчетов в эксцел делать. А с помощью вба можно многое оптимизировать, но справка по нему на английском и тупорылая. Поэтому для меня этот курс просто находка.
Спасибо за отзыв. Остальные мои курсы более целенаправленные (но такие же понятные), без многих лишних слов. Этот курс делался, как очень базовый, подходящий для любого человека, конечно всем не угодишь, но такова учесть курса для широкой многосторонней аудитории.
Спасибо. После просмотра (и практики) возникли некоторые вопросы: (Буду очень благодарным за ответ на них): 1. На сколько важно программировать в одном стиле ячеек (я имею в виду пропись как Range и Cells) - допускается ли смешенное введения данных в одной процедуре. 1.1. Как использовать циклы к обектам Range ("A4") как можно в данном случае добавлять к ячейкам столбцы и строки... Используют только Offset (Range ("A4").Offset(1, 0) - и далее проводим соответственные замены (оглашаем переменные - для строк и столбцов))? Или же можно обойтись без него? (Есть ли другие варианты?1.2. Как можно объявить массив данных с помощью объекта Cells? - по аналогии объекта Range ("A1:B5").? 2. Как автоматически менять стили ячеек R1C1 и обратно у формат А1 - есть ли горячие клавиши по умолчанию для этого действия - или же необходимо писать макрос (с назначение своей комбинации)?3. На сколько важно/желательно объявлять полную пропись операции: ActiveWorkbook.Sheets(1).Range("A6").Value=17 (то есть можно обходиться свободно без Value... и упрощать вплоть до Range ("A6")=17... (на первых этапах лучше прописывать полностью?.. (В принципе если этот код никто не будет видеть кроме самого разработчика - зачем его расписывать? 4. Есть ли своего рода (программа) переводчик команд? (с объяснением действий введенной команды) - или же только используется "Справка" и помощь Google?
+Роман Васюра 1. Не обязательно программировать в одном стиле, нужно выбирать стиль под конкретную задачу и возможное дальнейшее ее расширение, сопровождение. Конечно, допускается смешанная реализация программного кода в логическом блоке, но все должно быть прозрачно не только для Вас, но и для людей, которые, возможно, будут сопровождать в будущем Ваш код. Даже Вам должно быть понятно, что написано через два месяца, когда, обычно суть логики внутри процедур забывается. Также нужно избегать при таком программировании подстановки различных "костылей" в код, ну, например, Вы работаете с диапазонами “A1-A50”, и уже много кода написали, и тут Вам понадобилось выполнять цикл по ячейкам, а его удобнее писать как Cells(1,1) - Cells(50,1) и тогда Вы пишете в двух стилях, а между ними приделываете костыль в виде дополнительной какой-нибудь самописной функции и т.д., уж лучше бы сразу писали в стиле Cells(x,y). Но, конечно, если код написан архитектурно красиво и использует красивое взаимодействие между двумя стилями, например, написаны удобные сигнатуры у функций для взаимодействия, тогда это хороший путь, понятный любому разработчику для дальнейшего сопровождения кода. Программист помимо решения задачи, т.е. что должна программа выполнять, решает еще и как грамотно выстроить код программы, чтобы его можно было легко сопровождать, иначе доработка кода может превратиться в ад и дальнейшее его полное переписывание, что стоит времени и денег. Поэтому программист решает как минимум две задачи: 1 цель программы и 2) хорошую архитектуру и реализацию кода. 1.1 да, можно использовать Offset(x,y) - это хороший путь если Вам нужно писать в этом стиле, можете написать свою функцию для возвращения нужной Вам ячейки или диапазона. Массив данных с помощью объекта Cells, можно так: Range(Cells(1, 1), Cells(50, 1)) 2. 2. Никогда не работал со стилем формул R1C1, вполне, можно обойтись и без него. Активную книгу прописывать опять же не обязательно ActiveWorkbook.Sheets(1).Range("A6").Value=17, но желательно. Приведу пример из жизни, год назад ребята тестировали один и тот же макрос, с некоторыми отличиями в коде и выполнении цели программы, тестировали в разных одновременно открытых книгах на одной машине, так вот они думали, что творятся фантастические вещи или глюки, вроде макрос запускают, а он выдает не те результаты в книгу и так через раз или через два, то верные результаты на одних и тех же данных, то не верные результаты. Пришлось как обычно разбираться мне в их коде, оказалось, что макрос из одной книги работал с данными в другой книги, вот так вот, и результаты были разные. Поэтому запись о рабочей книге и листе рекомендую писать. Конечно, если Вы присваиваете значение, то .Value писать не обязательно, на первых этапах писать нужно, это вырабатывает хорошую привычку. А потом уже на автомате будете или писать, или не писать, опыт сделает свое дело со временем, четко будете понимать, что работаете с таким-то таким свойством. 3. В VBA можно использовать браузер(эксплорер, проводник) объектов. Далее книги, интернет, и т.д. Если найдете такой переводчик команд, поделитесь, пож-та. Скажу больше, сейчас последние два года не вижу качественных книг по программированию переведенных на русский язык, есть только на английском и видеоконтент на просторах интернета оставляет желать лучшего, не знаю, что произошло, но качественного современного обучения не хватает, я бы с удовольствием изучил несколько интересующих меня технологий, но все сводится к дорогим зарубежным пакетам обучения, либо книгам. Желаю Удачи!
Присоединяюсь к благодарностям - большущее спасибо! Очень доступно и по делу! Скажите, пожалуйста, а аналогичные уроки по c# от Вас не предвидятся?? :)
+anton notna Очень приятно, что уроки несут полезность. Курс по C# есть в планах, но думаю, что он (курс) будет не слишком разжеванным, как данный курс, но должен быть таким же понятным и доступным :)
Здравствуйте, а можете подсказать, какая функция в VBA отвечает за перемножение ячеек в диапазоне? У меня просто вот такое задание: Определить в диапазоне произведение элементов тех строк, первый элемент которых положителен.
Добрый День. Функция =Произвед(), в Вашем случае, например, в одной строке такая формула, протяните ее вниз для всех строк =Если(A1>0; Произвед(A1:D1))
Существуют различные методологии ООП, где классы прописываются только в класс-ориентированном программировании. Но всё-таки, как я понял (могу ошибаться), vba действительно немного псевдопрограммирование.(ещё один повод погордиться за openOffice, где js используется)
+Schmidt Science да, это неполноценное ООП, классы здесь тоже можно создавать, но это убого. И классы почти никто не использует в VBA, но в некоторых случаях можно. Вообще, это язык макросов и программирование здесь упрощено, но научиться структурному, процедурному программированию вполне можно.
Это не прототипный язык программирования, здесь можно использовать свои классы и работать с объектами, как в урезанном класс-ориентированном программировании, а не динамически управлять объектами и их методами. Просто в этом языке настолько много объектов под платформу, например, под Excel, что вы только и работаете с этими объектами, можете создавать новые объекты на основе уже определенных классов, НО НЕ ЭКЗЕМПЛЯРОВ объектов, что его и отличает от прототипных динамических языков, склоняя более к классическому ООП.
Да JavaScript удобен, но научившись на VBA классическому структурному программированию с использованием объектов, будет легче также перейти к классическому ООП, т.е. класс-ориентированному программированию на том же VB.NET или C#. Вообще меня от JavaScript, как и от PHP всегда немного потряхивало, так как всегда считал их недоязыками, но времена меняются и эти языки уже во многих местах зарекомендовали себя. Да и часто мне приходится frontend программировать на JS. VBA я также долгое время не признавал, пока не стал профессионально программировать на серьезных языках, и только после того, как я понял как устроенно вся эта кухня с языками, только тогда мне он понравился, как простой язык, которым можно пользоваться "если правильно его готовить". Чему я и стараюсь научить ребят в своих курсах.
Методами в некоторых других языках называют и процедуры и функции, так как они выглядят одинаково, они там различаются на методы возвращающие либо типы данных, либо void.
Здравствуйте, мне бы хотелось узнать, как сделать, чтобы информация бралась из ячейки, например: из ячейки B2 мне нужно число, для того чтобы в дальнейшем это число разделить на число из ячейки В3 и вывести результат в ячейку B4??? объясните пожалуйста, как мне это сделать?
Что нужно изменить в макросе из урока Dim diapas As Integer For diapas = 1 To 10 ThisWorkbook.Worksheets(1).Cells(diapas, 1) = 555 Next Чтоб получить заполненными не только один столбец или диагональ (diapas, diapas) а весь диапазон Пробовал писать что-то вроде Range (diapas:diapas) но не получается.
@@RobotoborPro разобрался: Dim diapas As Integer Dim dia As Integer For diapas = 1 To 10 For dia = 1 To 5 ThisWorkbook.Worksheets(1).Cells(diapas, dia) = 555 Next dia Next diapas Потихоньку начинаю понимать. Спасибо огромное!
Классный материал. Слов нет. Автору громадный плюс и палец вверх, но... Слушай, ну так нельзя!!! или ты по жизни флегматик полусонный, или слишком стараешься всё разжевать, или просто не имеешь программы подачи материала (так сказать учишь "влёт" - что пришло на ум, то и подаёшь). Слушать очень тяжело и ожидать: что ж ты в конце концов родишь? Лайк твой!
Да, этот курс у меня был первый, старался разжевывать до тошноты. За пример ученика, представлял, полного нуль человека, далекого от программирования и логического мышления. Ну, и конечно, многое сходу рассказывл, в основном это в первых уроках. Последние уроки в этом курсе, тоже почти сходу, но более быстрые, практичные. То есть весь код писался с нуля, без предварительного его кодирования и тестирования. Остальные мои курсы более живые и интересные, в них я считаю, что мой ученик, уже имеет некоторые знания, и отфильтровались те, кто не дошел до конца. Как-то так.
Я так и понял. Потому что одно и то-же по несколько раз - это не по приколу. За материал - благодарю от всей души. Так уж сложилось, что попал на лёгкий труд и нужно было сварганить программку для обработки документации по эксплуатации в локомотивном депо. Я и слепил, в екселе, единственное не учёл, что не у всех людей руки растут из плечей, у некоторых из другого места и мозг куриный,.вдобавок. Там необходимо массу данных вводить с клавиатуры, а это делать прямо в таблицах очень неудобно. Пришлось переделывать, вводить формы ввода и малевать кучу макросов. Ну, естественно я и забуксовал. Благо есть твой курс.... Выручил.
вЁрк бук - спасИбИ тЯбе за прИизнАшение. Нравится тЯбе? Я прошу прощения за тролинг, но докладчик по типу этих бестолковых "преподов" в универах. Монотонно изнуряющих поток студентов своим засыпающим голосом, которые коверкают все англоязычные слова как им хочется и начитывают всякую теоретическую ересь 2 часа, вместо практических занятий за 30-40 мин., применимых в дальнейшей работе! Я сдаюсь, это невозможно дальше смотреть
Деструктивное утверждение. Курс не для Вас, я Вам отвечал уже. Это не уроки быстрого решения проблемы, это последовательное обучение программированию в доступной манере. И с английским все в порядке, книги на английском приходится читать (часто приходится адаптировать английский для русскоязычного программиста). Тролей в аут.
Делаете большое дело! Не бросайте пожалуйста, мало кому удается так доступно преподнести материал.
Спасибо за подобные видео. Сам по образованию не программист, но в последнее время много приходится отчетов в эксцел делать. А с помощью вба можно многое оптимизировать, но справка по нему на английском и тупорылая. Поэтому для меня этот курс просто находка.
Молодец, все так понятно и доступно. Красавчик 5+
Спасибо за проделанную работу. Очень доступно и профессионально.
Спасибо. Всё довольно доходчиво, особенно когда сам сразу же пробуешь!
Спасибо за курс.
Нравится не все, но это один из самых доступных БАЗОВЫХ курсов по VBA.
Спасибо за отзыв. Остальные мои курсы более целенаправленные (но такие же понятные), без многих лишних слов. Этот курс делался, как очень базовый, подходящий для любого человека, конечно всем не угодишь, но такова учесть курса для широкой многосторонней аудитории.
Спасибо, очень интересные уроки.
Учусь по вашим урокам, все получается
+Георгий Дементьев Отлично, очень рад!
Впервые столкнулся с надобностью перемотки со скоростью быстрее, чем x2
Очень хорошие видео, еще бы книжку с более глубокой теорией, там где все понятия будут разжеваны так сказать))
Пока все понятно. Даже страшно. - Учим дальше)
Просто----- Большое Спасибо
Спасибо,что так "разжевываете"!!Вот домашнее задание какое-нибудь если было...а ответ только в конце следующего урока,дело бы еще быстрее пошло.
+Анастасия Богданова Спасибо за подсказку, возможно, так и сделаю к какому-нибудь видео-курсу )
спасибо. все очень понято. для чайников))
СПАСИБО !
Спасибо.
После просмотра (и практики) возникли некоторые вопросы: (Буду очень благодарным за ответ на них):
1. На сколько важно программировать в одном стиле ячеек (я имею в виду пропись как Range и Cells) - допускается ли смешенное введения данных в одной процедуре.
1.1. Как использовать циклы к обектам Range ("A4") как можно в данном случае добавлять к ячейкам столбцы и строки... Используют только Offset (Range ("A4").Offset(1, 0) - и далее проводим соответственные замены (оглашаем переменные - для строк и столбцов))? Или же можно обойтись без него? (Есть ли другие варианты?1.2. Как можно объявить массив данных с помощью объекта Cells? - по аналогии объекта Range ("A1:B5").?
2. Как автоматически менять стили ячеек R1C1 и обратно у формат А1 - есть ли горячие клавиши по умолчанию для этого действия - или же необходимо писать макрос (с назначение своей комбинации)?3. На сколько важно/желательно объявлять полную пропись операции: ActiveWorkbook.Sheets(1).Range("A6").Value=17 (то есть можно обходиться свободно без Value... и упрощать вплоть до Range ("A6")=17... (на первых этапах лучше прописывать полностью?.. (В принципе если этот код никто не будет видеть кроме самого разработчика - зачем его расписывать?
4. Есть ли своего рода (программа) переводчик команд? (с объяснением действий введенной команды) - или же только используется "Справка" и помощь Google?
+Роман Васюра
1. Не обязательно программировать в одном стиле, нужно выбирать стиль под конкретную задачу и возможное дальнейшее ее расширение, сопровождение. Конечно, допускается смешанная реализация программного кода в логическом блоке, но все должно быть прозрачно не только для Вас, но и для людей, которые, возможно, будут сопровождать в будущем Ваш код. Даже Вам должно быть понятно, что написано через два месяца, когда, обычно суть логики внутри процедур забывается. Также нужно избегать при таком программировании подстановки различных "костылей" в код, ну, например, Вы работаете с диапазонами “A1-A50”, и уже много кода написали, и тут Вам понадобилось выполнять цикл по ячейкам, а его удобнее писать как Cells(1,1) - Cells(50,1) и тогда Вы пишете в двух стилях, а между ними приделываете костыль в виде дополнительной какой-нибудь самописной функции и т.д., уж лучше бы сразу писали в стиле Cells(x,y). Но, конечно, если код написан архитектурно красиво и использует красивое взаимодействие между двумя стилями, например, написаны удобные сигнатуры у функций для взаимодействия, тогда это хороший путь, понятный любому разработчику для дальнейшего сопровождения кода.
Программист помимо решения задачи, т.е. что должна программа выполнять, решает еще и как грамотно выстроить код программы, чтобы его можно было легко сопровождать, иначе доработка кода может превратиться в ад и дальнейшее его полное переписывание, что стоит времени и денег. Поэтому программист решает как минимум две задачи: 1 цель программы и 2) хорошую архитектуру и реализацию кода.
1.1 да, можно использовать Offset(x,y) - это хороший путь если Вам нужно писать в этом стиле, можете написать свою функцию для возвращения нужной Вам ячейки или диапазона. Массив данных с помощью объекта Cells, можно так: Range(Cells(1, 1), Cells(50, 1))
2. 2. Никогда не работал со стилем формул R1C1, вполне, можно обойтись и без него. Активную книгу прописывать опять же не обязательно ActiveWorkbook.Sheets(1).Range("A6").Value=17, но желательно. Приведу пример из жизни, год назад ребята тестировали один и тот же макрос, с некоторыми отличиями в коде и выполнении цели программы, тестировали в разных одновременно открытых книгах на одной машине, так вот они думали, что творятся фантастические вещи или глюки, вроде макрос запускают, а он выдает не те результаты в книгу и так через раз или через два, то верные результаты на одних и тех же данных, то не верные результаты. Пришлось как обычно разбираться мне в их коде, оказалось, что макрос из одной книги работал с данными в другой книги, вот так вот, и результаты были разные. Поэтому запись о рабочей книге и листе рекомендую писать.
Конечно, если Вы присваиваете значение, то .Value писать не обязательно, на первых этапах писать нужно, это вырабатывает хорошую привычку. А потом уже на автомате будете или писать, или не писать, опыт сделает свое дело со временем, четко будете понимать, что работаете с таким-то таким свойством.
3. В VBA можно использовать браузер(эксплорер, проводник) объектов. Далее книги, интернет, и т.д. Если найдете такой переводчик команд, поделитесь, пож-та. Скажу больше, сейчас последние два года не вижу качественных книг по программированию переведенных на русский язык, есть только на английском и видеоконтент на просторах интернета оставляет желать лучшего, не знаю, что произошло, но качественного современного обучения не хватает, я бы с удовольствием изучил несколько интересующих меня технологий, но все сводится к дорогим зарубежным пакетам обучения, либо книгам.
Желаю Удачи!
+ROBOTOBOR.PRO ✌ Доступное Программирование
Спасибо!!!
Такого обширного ответа не ожидал)
Успехов и Вам!!!
Присоединяюсь к благодарностям - большущее спасибо! Очень доступно и по делу! Скажите, пожалуйста, а аналогичные уроки по c# от Вас не предвидятся?? :)
+anton notna Очень приятно, что уроки несут полезность. Курс по C# есть в планах, но думаю, что он (курс) будет не слишком разжеванным, как данный курс, но должен быть таким же понятным и доступным :)
Thank you a lot!!!
блин посмотрел сколько там уроков ещё смотреть и я понимаю что первый урок я забываю
Здравствуйте, а можете подсказать, какая функция в VBA отвечает за перемножение ячеек в диапазоне? У меня просто вот такое задание: Определить в диапазоне произведение элементов тех строк, первый элемент которых положителен.
Добрый День. Функция =Произвед(), в Вашем случае, например, в одной строке такая формула, протяните ее вниз для всех строк =Если(A1>0; Произвед(A1:D1))
Спасибо большое!
а зачем через ВБА. Напиши формулу массива ={ПРОИЗВЕД(ЕСЛИ(A1:A5>0;A1:A5;""))}
Существуют различные методологии ООП, где классы прописываются только в класс-ориентированном программировании.
Но всё-таки, как я понял (могу ошибаться), vba действительно немного псевдопрограммирование.(ещё один повод погордиться за openOffice, где js используется)
+Schmidt Science да, это неполноценное ООП, классы здесь тоже можно создавать, но это убого. И классы почти никто не использует в VBA, но в некоторых случаях можно. Вообще, это язык макросов и программирование здесь упрощено, но научиться структурному, процедурному программированию вполне можно.
Классы здесь и не надо создавать. Как я понял, это прототипный стиль программирования. У него есть свои минусы, но в некоторых ситуациях он уместнее.
А на счёт простоты, да, vba очень упрощённый язык, но, согласитесь, с js работать куда удобнее.
Это не прототипный язык программирования, здесь можно использовать свои классы и работать с объектами, как в урезанном класс-ориентированном программировании, а не динамически управлять объектами и их методами. Просто в этом языке настолько много объектов под платформу, например, под Excel, что вы только и работаете с этими объектами, можете создавать новые объекты на основе уже определенных классов, НО НЕ ЭКЗЕМПЛЯРОВ объектов, что его и отличает от прототипных динамических языков, склоняя более к классическому ООП.
Да JavaScript удобен, но научившись на VBA классическому структурному программированию с использованием объектов, будет легче также перейти к классическому ООП, т.е. класс-ориентированному программированию на том же VB.NET или C#. Вообще меня от JavaScript, как и от PHP всегда немного потряхивало, так как всегда считал их недоязыками, но времена меняются и эти языки уже во многих местах зарекомендовали себя. Да и часто мне приходится frontend программировать на JS. VBA я также долгое время не признавал, пока не стал профессионально программировать на серьезных языках, и только после того, как я понял как устроенно вся эта кухня с языками, только тогда мне он понравился, как простой язык, которым можно пользоваться "если правильно его готовить". Чему я и стараюсь научить ребят в своих курсах.
Подскажите , а разве методы это не совокупность функций и процедур ?
Методами в некоторых других языках называют и процедуры и функции, так как они выглядят одинаково, они там различаются на методы возвращающие либо типы данных, либо void.
А как вставить, например в ячейку Е5, любое из значений от A1 до С1, например? Заранее спасибо
+Rustam Furs
можно так: Cells(5, 5).Value = Cells(1, 2).Value
или так: Range("E5").Value = Range("B1").Value
Здравствуйте, мне бы хотелось узнать, как сделать, чтобы информация бралась из ячейки, например: из ячейки B2 мне нужно число, для того чтобы в дальнейшем это число разделить на число из ячейки В3 и вывести результат в ячейку B4??? объясните пожалуйста, как мне это сделать?
+Алекасндр Евашов Можно так, как самый простой вариант: Range("B4").value = Range("B2").value / Range("B3").value
+ROBOTOBOR.PRO ✌ Доступное Программирование Большое спасибо!!! Оказывается всё намного проще=)
Что нужно изменить в макросе из урока
Dim diapas As Integer
For diapas = 1 To 10
ThisWorkbook.Worksheets(1).Cells(diapas, 1) = 555
Next
Чтоб получить заполненными не только один столбец или диагональ (diapas, diapas) а весь диапазон
Пробовал писать что-то вроде Range (diapas:diapas) но не получается.
Нужен цикл в цикле. В каком-то из уроков это показано.
@@RobotoborPro разобрался:
Dim diapas As Integer
Dim dia As Integer
For diapas = 1 To 10
For dia = 1 To 5
ThisWorkbook.Worksheets(1).Cells(diapas, dia) = 555
Next dia
Next diapas
Потихоньку начинаю понимать. Спасибо огромное!
Классный материал. Слов нет. Автору громадный плюс и палец вверх, но... Слушай, ну так нельзя!!! или ты по жизни флегматик полусонный, или слишком стараешься всё разжевать, или просто не имеешь программы подачи материала (так сказать учишь "влёт" - что пришло на ум, то и подаёшь). Слушать очень тяжело и ожидать: что ж ты в конце концов родишь?
Лайк твой!
Да, этот курс у меня был первый, старался разжевывать до тошноты. За пример ученика, представлял, полного нуль человека, далекого от программирования и логического мышления. Ну, и конечно, многое сходу рассказывл, в основном это в первых уроках. Последние уроки в этом курсе, тоже почти сходу, но более быстрые, практичные. То есть весь код писался с нуля, без предварительного его кодирования и тестирования. Остальные мои курсы более живые и интересные, в них я считаю, что мой ученик, уже имеет некоторые знания, и отфильтровались те, кто не дошел до конца. Как-то так.
Я так и понял. Потому что одно и то-же по несколько раз - это не по приколу. За материал - благодарю от всей души. Так уж сложилось, что попал на лёгкий труд и нужно было сварганить программку для обработки документации по эксплуатации в локомотивном депо. Я и слепил, в екселе, единственное не учёл, что не у всех людей руки растут из плечей, у некоторых из другого места и мозг куриный,.вдобавок. Там необходимо массу данных вводить с клавиатуры, а это делать прямо в таблицах очень неудобно. Пришлось переделывать, вводить формы ввода и малевать кучу макросов. Ну, естественно я и забуксовал. Благо есть твой курс.... Выручил.
вот это видео понятно.7.1 и 7.2 непонятны
уже 5 минут посмотрел, пока ничего не сказано по сути..
скорость 1.5
вЁрк бук - спасИбИ тЯбе за прИизнАшение. Нравится тЯбе? Я прошу прощения за тролинг, но докладчик по типу этих бестолковых "преподов" в универах. Монотонно изнуряющих поток студентов своим засыпающим голосом, которые коверкают все англоязычные слова как им хочется и начитывают всякую теоретическую ересь 2 часа, вместо практических занятий за 30-40 мин., применимых в дальнейшей работе! Я сдаюсь, это невозможно дальше смотреть
Деструктивное утверждение. Курс не для Вас, я Вам отвечал уже. Это не уроки быстрого решения проблемы, это последовательное обучение программированию в доступной манере. И с английским все в порядке, книги на английском приходится читать (часто приходится адаптировать английский для русскоязычного программиста). Тролей в аут.
Очередной дурачок, считающий, что обучение - это развлечения и пляски не более 30-40 минут. Главное, чтобы его высочество не заскучало.