Чтение и анализ записанного макроса
На предыдущих уроках мы научились создавать макросы, редактировать и копировать записанные макросы. Задача данного видеоурока - научиться читать записанные простые макросы и понимать, что именно должен выполнять тот или иной макрос, без запуска его на выполнение. Рассматривается наиболее эффективная методика изучения макросов на начальном этапе - их макросов и последующий анализ.
зарегистрироваться на сайте
обновите страницу по этой ссылке или кнопкой F5
Комментарии
очень интересно, но мне бы хотелось узнать, как использовать макрос для неограниченного числа столбцов или сток
Добрый день, Татьяна
Как обработать неограниченное число строк/столбцов, показано здесь: http://www.excel-eto-prosto.ru/webinar/filling_tables_2
Спасибо Дмитрий за Ваш благородный труд.
Уроки мне помогли, в том числе в том, что ничего невозможного нет. Есть к кому обратиться за помощью. К сожалению не располагаю достаточно временем, что бы погрузиться в exel. Это очень интересно, просто волшебно, если знаешь хитрости и возможности столь мощного интрумента.
Здравствуйте Дмитрий!
Заранее благодарю вас за ваш благородный поступок бесплатно поделиться своими знаниями.
Вопрос: Как связать несколько действий по копированию разных столбцов с одной книги в новую по макросу? Каким термином нужно их связывать?
Например:
Sub module1
Range ("B14:M41").Select
Slection. Copy
Widows("Book1").Activate
ActiveSheet.Paste
Range ("B14:M41").Select
Slection. Copy
Widows("Book1").Activate
ActiveSheet.Paste
End Sub
Добрый день.
Не понял Вашего вопроса. Понял, что стоит задача копирования диапазонов данных из одного файла в другой - а в чем вопрос?
PS: копирование диапазона проще делать одной командой (а не тремя, как у Вас), например так:
Range("B14:M41").Copy Workbooks("Book1").Worksheets("Sheet1").Cells(1, 1)
(имена книги, листа и адреса ячеек, конечно, подставляете свои)
Спасибо, Дмитрий!
МОЛОДЕЦ!
Спасибо!!!
Большое спасибо, Дмитрий,всё доходчиво и понятно разъяснили. Да поможет нам Бог!
Спасибо! Кажется так просто, на самом деле приходится трудиться.
Наверное просто будет, когда всему научишься.Будем стараться!
Спасибо, отличное видео!
Большое спасибо, Дмитрий!
Отличные уроки, все очень доходчиво и понятно. Буду дальше просматривать ваши занятия.
Спасибо Дмитрий. Для меня Макрос был загадкой, но благодоря Вам все изменилось.
Здравствуйте, Дмитрий. При запуске примеров выдается информация о том, что служба безопасности отключила макросы. Куки включены, все другие макросы работают, а Ваши примеры протестировать не могу. Заранее спасибо.
Добрый день, Ольга.
Видимо, у Вас стоит высокий уровень безопасности макросов. Поставьте уровень "Включить все макросы" перед открытием моих файлов - должно заработать.
Дмитрий, я по поводу невозможности тестирования примеров:уровень безопасности низкий. Может я что-то в куках не понимаю, но история в браузере сохраняется, в Ccliner убрала галочку с "очистить куки". Пользуюсь Firefox. До сих пор проблем не было. Может есть еще какая-то тонкость?
Макросы в моих примерах никак не зависят от настроек браузера, "куков" и прочего. Скачали файлы, установили низкий уровень безопасности макросов, открыли - все должно работать. Если все же не работает - заочно сложно сказать, что не так.
Спасибо за попытки помочь, видно не судьба!
Добрый день, открываются только первые 3 видеоурока, а я их посмотрела раньше. В чем причина?
Дмитрий, спасибо за такие простые и доходчивые видео уроки! Считаю что такие уроки необходимо вводить в школьную программу по информатике. Это больше может помочь большинству учеников, чем, например, знание интегралов!
Спасибо огромное! Все очень доступно, кратко и понятно, надеюсь увидеть как можно больше таких уроков от Вас Дмитрий!!!
Добрый день, Дмитрий!
при самостоятельном выполнении разобранного примера столкнулась с неожиданностью)))
команда выделить ячейку выглядит след. образом
ActiveCell.Offset(3, 1).Range("A1").Select
и в зависимости от выбранной ячейки меняется наполнение первой скобки, но Range("A1") неизменна.
работаю в 2010, в нем что-то изменилось?
Спасибо
Добрый день, Ирина.
Код, записываемый макрорекордером, от версии к версии может несколько меняться. И зачастую, такой код грешит излишней избыточностью (см. последующие уроки).
В Вашем примере фрагмент ".Range("A1")" можно вообще убрать - он ни на что не влияет, величину сдвига относительно текущей ячейки определяют параметры в скобках после Offset. Оставьте просто ActiveCell.Offset(3, 1).Select - так будет понятнее.
Здравствуйте, Дмитрий! Спасибо большое за Ваши уроки, они очень доступные, лаконичные, учат, как просто и доходчиво донести рассматриваемые темы до обучающихся.
В этом уроке на примере мы второй раз возвращаемся в строку В10, что б ее выделить. Но почему макрос не записал когда после фамилии мы энтером слетели со строки.
Добрый день, Наталья.
На какой минуте видео происходит указанное Вами действие? Чтобы я не пересматривал урок полностью
Урок №3, 10:20 мин. Когда возвращаемся к ячейке В10 есть, а когда с нее сходили в ячейку В11 записи нет. Или само действие Энтер не пишется в макросе.
Теперь понял.
Дело в том, что по ходу записи сохраняемый код немного оптимизируется. Когда мы ввели фамилию и курсор перескочил на ячейку B11, оба эти действия (ввод значения и активизация следующей ячейки) фиксируются в коде. После этого мы (без промежуточных действий) выделяем ячейку B10, и в этот момент макрорекордер автоматически удаляет предыдущую команду по выделению B11 - эту команду он считает "лишней", т.к. после выделения ячейки мы ничего с ней не сделали, а сразу же выделили другую ячейку. По сути, логика правильная и подобное поведение макрорекордера еще на этапе записи макроса уже немного облегчает нам задачу, сокращая записанный код за счет ненужных команд.
Этот эффект хорошо виден, если расположить окна Excel и редактора кода так, чтобы их было видно одновременно, и при включенном режиме записи макроса попробовать активизировать по очереди разные ячейки: увидите, как последняя команда кода автоматически заменяется более "свежей".
Понятно.
Просто Ваши слова: "все что вы делаете записывается" я стала понимать слишком буквально.
Спасибо большое.
Здравствуйте, Дмитрий. Макрорекордер, как мне кажется, вещь исключительно полезная для изучения, но иногда запись обескураживает.
Возникла у меня как-то нужда дополнить скопированный из Planeta Excel макрос действием добавления строки, команды Insert Row()я не знал и записал макрос: Selection.Insert Shift:=xlDown. Строку то он вставляет, но не там, где надо. Поэтому пользоваться макрорекордером "без царя в голове", особенно в практической работе, я бы не советовал.
Добрый день, Александр.
"Без царя в голове" я бы вообще не советовал ничем пользоваться
А если серьезно - в записанном макрорекордером коде указывается, в каком именно месте будет вставлена строка/столбец/диапазон ячеек:
Selection.Insert - команда Insert ("вставить") относится к объекту Selection ("выделение").
Таким образом, вставляться будет диапазон ячеек такой же, какой является выделенным в момент выполнения макроса, и новый диапазон будет добавлен сразу же после выделенного (т.е. ниже на листе). А уж какой именно диапазон у Вас там выделен - смотрите в Вашем коде выше этой команды. Так что здесь все логично.
Ogromnoje spasibo, ochen poniatno i prakticno v ispolzovanii
Ув.Дмитрий у меня сложности с записью макроса,зажанная кнопка не отвечает по условию на команду(Ctrl+й)и вообще я начинающий пользователь.Мне очень нужно научится.
Спасибо, очень полезные уроки, рекомендую и покажу ваш адрес друзьям.
Да, я давно хочу освоить макросы. Буду смотреть уроки. К сожалению мне некому порекомендовать заниматься макросами, поэтому прошу открыть доступ к дальнейшим урокам.
Спасибо Дмитрий, все уроки очень информативны и понятны. Вся информация прикладная. Планирую учиться по Вашим урокам далее.
Добрый день, Дмитрий! Я нашла нужный мне макрос, который подсчитает число печатных листв. вот он:Sub GetPrintPagesCount()
Dim wshtSheet As Worksheet
Dim intPagesCount As Integer
' Суммирование количества страниц, необходимых для печати всех _
листов книги
For Each wshtSheet In Worksheets
intPagesCount = intPagesCount + (wshtSheet.HPageBreaks.Count + 1) * _
(wshtSheet.VPageBreaks.Count + 1)
' Next
' MsgBox "Всего страниц: " & intPagesCount
End Sub
Но! Во-первых, мне не нужно выводить это сообщением, а привязать его к определенной Ячейке, например, А4. Т.Е. две сроки я закомментирую, а нужное мне число находится в intPagesCount. Как его привязать к нужной ячейке?
Добрый день, Наиля.
Можно выполнить данный макрос в виде функции, и использовать ее как обычную формулу Excel в ячейке на листе. Предположим, назову эту функцию КоличествоЛистов и размещу в программном модуле следующий код:
Function КоличествоЛистов()
КоличествоЛистов = "Всего страниц: " & (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1)
End Function
После этого в любой ячейке в этой книге можно обратиться к данной функции, поместив такой вызов:
=КоличествоЛистов()
В результате, в ячейке будет выведен текст вида "Всего страниц: 2".
Проблема только одна: при изменении числа печатных страниц (например, в результате изменения размера полей или изменения числа заполненных ячеек на листе) формулы в Excel не пересчитываются автоматически. Поэтому в этом варианте решения придется перед отправкой листа на печать пересчитать эту формулу (нажав в ячейке F2 и Enter).
PS: подробнее о пользовательских функциях рассказано в уроке №11.
Дмитрий Быстров, большое спасибо! Оперативно, информативно и, главное!, результативно!
Спасибо, отличное видео!
Уважаемый Дмитрий! Большое спасибо за Ваши уроки. Я уже самостоятельно (с помощью литературы) приобрел некоторый опыт программирования в Excel, поэтому информация представленная в первых трёх уроках мне знакома. Но!!! Попадаются некоторые наглядные мелочи которые мне оказались очень полезными для дальнейшего изучения программирования. Хотелось бы просмотреть остальные уроки, но я не "дружу" с интернетом и поэтому не зареристрирован в соцсетях и не участвую в форумах. Но друзьям и знакомым обязательно порекомендую обратиться к Вашим урокам, т.к. они очень информативны и изложены очень простым языком что в наше время очень большая редкость. Желаю успехов в Ваших благородных делах.
Добрый день, Юрий.
Благодарю за отзыв ) Открыл Вам доступ к следующим урокам. Приятного просмотра!
Дмитрий! Большое спасибо за сотрудничество. Буду наслаждаться Вашими уроками.
Уважаемый Дмитрий! Не буду оригинальным и, в первую очередь благодарю Вас за Ваши уроки. Переоценить их сложно с учетом того, что раньше программированием в Excel я не занимался. Интерес возник после того, как я решил облегчить труд нашего казначея при приеме денежных взносов членов СНТ. Она вручную заполняла приходный ордер. Времени на это уходило много. Очередь двигалась медленно.
Программку в Excel я сделал, пользуясь известными мне функциями, но как генерировать последующий номер документа, я самостоятельно решить не мог.
Обратился в интернет и нашел пример генерации номера. Но как пристроить его к своей программе? И тут Ваши замечательные уроки очень здорово помогли. Еще раз Огромное Спасибо!
Есть только одно не критичное замечание – мешает заливка с указанием Вашего сайта внизу экрана, особенно при просмотре работы с окном «Immediate». Если можно, сделайте ее прозрачней.
Теперь о грустном. К сожалению, я не зарегистрирован ни в одной социальной сети и вообще впервые пишу комментарий. В этой связи выполнение Вашей просьбы пока для меня затруднительно. Надеюсь, что смогу разобраться, куда и как зайти для рекомендации Вашего сайта и получения доступа ко всем урокам.
Вам же желаю удачи по жизни в целом.
Добрый день, Валерий.
Рад, что Вы уже сумели применить новую информацию в Вашей практической задаче
По поводу "заливки с названием сайта": она есть только в видеороликах на Youtube, в роликах на сайте ее нет - если она мешает, смотрите видео на сайте )
Доступ к следующим урокам Вам открыт, приятного просмотра!
Здравствуйте, Дмитрий!
Мне очень нравятся ваши уроки, спасибо.Это очень пока доступно и нужно. Все уроки пока не прошел, я тихоход, кроме того у меня несколько иные цели обучения, не связанные со скоростью, хотя и это на своем месте.
Еще раз спасибо и успехов вам в вашем труде. Ни жезла, ни гвоздя!!!
Добрый день, Дмитрий,
Не могу найти ваш урок №6. Подскажите, пожалуйста, где и как можно ознакомится с его содержанием?
Большое спасибо!
Добрый день, Олег.
Доступ к уроку №6 для Вас открыт - ссылка на него Вам должна быть видна в списке уроков.
Дмитрий, добрый день!
Мне кажется, что я наконец-то нашла "своего" учителя!
Я давно хотела освоить макросы, но те материалы, которые я находила в интернете, были достаточно сложными для понимания, наталкивающими меня на мысль, что для меня это останется непосильной задачей. Благодаря Вам я поняла, что это совсем не так. Ваши уроки настолько продуманы, излагаемый материал понятен, никакой "воды" и сложных формулировок. С удовольствием буду продолжать изучение и надеюсь, что в скором времени смогу Вам похвастаться результатами своей работы.
Дмитрий, большое Вам спасибо! Давно хотела разобраться с макросами, т.к по работе приходится постоянно что-то автоматизировать, а просить других написать макрос не всегда удобно. Надеюсь, благодаря Вашим урокам смогу автоматизировать работу "под себя". С нетерпением жду доступа к дальнейшим урокам. С удовольствием порекомендовала Ваш сайт друзьям
Отлично!!!
Дмитрий, добрый день!
Спасибо большое за доступное объяснение.
Вопрос:
Я пользуюсь MS Exceel 2011 для Mac.
1). К сожалению не могу найти вкладку "безопасность".
2). Выбираю нужный мне цвет, жирный шрифт. При запуске макроса bold работает, а вот цвет не меняется. Открываю редактирование - индекс цвета стоит черный (0), несмотря на что что при записи я выбирала другой. Подскажите пожалуйста в чем может быть проблема?
Добрый день, Влада.
1. Про Mac, к сожалению, не могу ничего сказать: всегда имел дело только с ОС Windows, поэтому не знаю особенности программных продуктов под другие ОС.
2. Попробуйте в коде макроса использовать не свойство ColorIndex (которое по умолчанию записывается при записи макроса с помощью макрорекордера), а свойство Color. Полагаю, результат будет более удобным. Например, для установки красного цвета шрифта можно записать команду так:
Range("A1").Font.Color = vbRed
В одном из следующих видеоуроков здесь, на сайте, подробно рассказано, как установить нужный цвет (любой) для ячейки.
Здравствуйте, Дмитрий! Огромное спасибо за Ваши уроки! Можно ли посмотреть таблицу слов (как справочник для чтения макросов), не могу найти её. И подскажите еще пожалуйста видео урок как использовать макрос для неограниченного числа столбцов и строк (Автоматизация заполнения таблиц) где можно его посмотреть, заранее благодарна.
Дмитрий, благодарю, за лаконичное и доступное изложение материала.
Спасибо,Дмитрий. Вы очень хороший преподаватель.
Spasibo za uroki. Oni mne ocen pomogli oswoit excel.
Дмитрий большое спасибо очень доступное и гениальное Слава Богу
могут только зарегистрированные пользователи.
Ваше имя и тот e-mail, который был указан при регистрации)
В любой момент времени вы можете отказаться от получения сообщений.
Полезно, наглядно, понятно, существенно расширила свои знания благодаря данным урокам - спасибо, Дмитрий)
Добрый день, Анатолий.
Подробнее о создании программы для тестирования было рассказано в специальном платном мастер-классе "Создание программы по тестированию". Приобрести его можно по этой ссылке.
Что касается счетчика времени - в мастер-классе такого функционала не было, но позднее я доработал созданную в нем программу и добавил в нее такой счетчик - при приобретении мастер-класса я вместе с ним предоставлю и доработанную версию программы.
Спасибо! Классно. Где можно списать Вашу программу для шаблона? Счетчик времени на тестирование как вставить?
Здравствуйте. Подскажите, а можно ли сделать Q-код в таблице, но чтоб там было видно наименование упаковки, вес, дата прихода, наименование контрагента и тд. И при каждом изменении данных, автоматически делался Q-код?
Добрый день, Дмитрий. Я случайно увидела ваши видео в ютубе. Посмотрела и мне стало интересно изучить макросы. Перешла по ссылке и просмотрела часть бесплатных видео и мне очень понравилась ваша манера преподавать просто без лишних слов. Скажите, пожалуйста, а как сделать выпадающий...
Здравствуйте В видео "Автоматизация заполнения бланка документа (платежного поручения)" говориться, что можно скачать файлы с макросами, о которых идет речь. Не могу найти. Подскажите, пожалуйста,где скачать Файл?
Благодарю Вас хотя у меня оффис 97 все полчается
здравствуйте, Дмитрий... подскажите пожалуйста такой момент, для того, чтобы сделать макрос с фамилиями, я сделала перечень с фамилиями и суммами.. так вот у меня слово фамилия при сортировке улетает в самый низ))) то есть оно тоже сортируется... что не так в моей таблице?
Спасибо большое.Очень полезная информация
Замечательные уроки, большое спасибо автору. Все очень доходчиво, без лишних заморочек.