Сохранить Excel с поддержкой макросов? Варианты сохранения
· Видеоурок по данной теме
Excel - это конечно хорошо, но Excel с поддержкой макрасов ещё лучше.
Существует несколько вариантов сохранения книг с поддержкой макросов. Тут нет никакого тибетского метода по их сохранению просто нажимаем кнопку на ленте Файл и выбираем пунктСохранить как. По умолчанию в настоящее время книга сохраняется с расширением .xlsx, к сожелению данное сохранение не поддерживает макросы.
Для того чтобы наши макросы адекватно работали нам подходят три "полноценных" формата сохранения книги.
1 - Сохранение книги с расширением .xls
2 - Сохранение книги с расширением .xlsm
3 - Сохранение книги с расширением .xlsb
Первый вариант наиболее распространённый. Это тот вариант когда никому не надо знать, что в книге имеются макросы. Данный способ всем хорош кроме одного - если книга большая, то она может весить до нескольких Мбайт.
Второй вариант неплохой, но всем сразу видно, что это не просто книга Excel, а с поддержкой макросов, и по личному опыту знаю, что многие с недоверием относятся к таким книгам.
Третий способ самый интересный. Это так называемая двоичная книга. Я предпочитаю сохранять под данным расширением. Дело в том, что это самый экономичный способ сохранения. Если книга с раширением .xls имеет размер порядка 6 Мбайт, то книга с расширением .xlsb будет весить порядка 100-200 кБайт. Что значительно экономит место на жёстком диске. Так же значительно проще отправлять по электронной почте. Но у этого метода так же есть свои недостатки. Книга с таким расширением работает только под Майкрософт Оффисом.
Вот вообщем-то и всё. Вам самим решать под каким расширением сохранять книгу с макросами, и что вы хотите с ней делать.
Заполняем ячеки таблицы
Условие Если... То...
· Видеоурок по данной теме
Ячейка Cells
Ячейка в VBA описывается Cells(a, b) через запятую, где
a - это номер строки
b - это номер столбца
Предположим необходимо прописать в первую ячейку первого столбца некоторое число.
Запись будет выглядеть так:
Если необходимо прописать значение в ячейку на конкретный лист, то запись будет выглядеть следующим образом:
Worksheets("Лист1").Cells(1, 1) = 123При этом отделение листа и ячейки осуществляется точкой.
Если содержимое ячейки текст, то его необходимо заключать в кавычки.
Условие Если... То...
Иногда требуется выполнение определённого условия. Самое распростронённое как ни странно - это условие Если То.
Запись его выглядит так:
If - это начало условия, читается как Если
Then - это равносильно российскому То
Else - это равносильно слову Иначе
End If - это закрытие данного условия
Ниже приведён пример его применения.
Sub Primer() If Cells(1, 1) = 1 Then Cells(1, 2) = 1 Else Cells(1, 2) = 0 End If End SubДанный код читается следующим образом. Если ячейка А1 = 1, то В1 = 1, иначе В1 = 0.
Ниже приведён пример с информационными сообщениями.
Sub Primer() Da = MsgBox("Вам понравился данный пример?", vbYesNo, "Пример") If Da = vbYes Then MsgBox "Это хорошо", vbInformation, "Пример" Else MsgBox "Печально", vbInformation, "Пример" End If End Sub
Работа с диапазоном ячеек
Range
· Видеоурок по данной теме
Диапазон ячеек описывается Range( ).
При этом в скобках может находиться не обязательно диапазон ячеек, можно описать и одну ячейку, например, так:
Range("A1").SelectПри такой записи произойдёт выделение только одной ячейки А1.
А вот если запись произвести следующим образом:
Range("A1:B3").Selectто произойдёт выделение всего указанного диапазона, в данном случае это А1:В3.
Если произвести следующую запись:
то единица, в первом случае, будет находиться во всём указанном диапазоне (в каждой ячейке будет 1). Аналогичная ситуация во втором случае: слово Текст будет написано во всех ячейках указанного диапазона.
При этом, следующие записи равнозначны:
Range("A1:B3") = "Текст" = Range("A1","B3")="Текст"А как сделать так, чтобы было одновременно выделено несколько диапазонов?
Очень просто. Выглядеть это будет так:
Как и в примере с ячейками, диапазон можно выделить, изменить и т.п. не обязательно на активном листе, а на каком-нибудь другом. Выглядеть это будет так:
Worksheets("Лист2").Range("A1:B3") = "Текст"Ну и конечно же диапазон можно задать ячейками:
Range(Cells(1, 1), Cells(3, 3)) = "Текст"