Есть такая шутка bash.org. Цензурная версия
<Kuja> я те в сто тыщ раз сожму инфу.
<Kuja> попроси меня рассказать сюжет СантаБарбары — я тебе отвечу — чепуха.
Макрорекордер в Excel — хороший инструмент. Еще лучше, если вы понимаете как его использовать. В начале, когда вы только учитесь программированию на VBA это отличный способ узнать как выполнить ту или иную операцию. Но, как только базовые знания получены, я бы все-таки рекомендовал обратиться к соответствующим книгам, курсам или хотя бы видео.
Давайте приведу пример зачем это может быть нужно.
Описание задачи
Записать в ячейки C4:E7 значение 123
Сделать шрифт полужирным
Покрасить шрифт в красный цвет
Покрасить границы для ячеек
Вот, что будет записано макрорекордером
[code language=»vb»]
Sub Макрорекордер()
‘
‘ Макрос2 Макрос
‘
‘
Range("C4:E7").Select
Selection.FormulaR1C1 = "123"
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.Font.Bold = True
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
[/code]
45 строчек кода, Карл! И все это, чтобы выполнить очень простые действия. А вот кусочек кода, написанный с помощью лучших практик.
[code language=»vb»]
Sub Code_Master()
With Range("C4:E7")
.Value = 123
.Font.Color = RGB(255, 0, 0)
.Font.Bold = True
.Borders.LineStyle = xlContinuous
End With
End Sub
[/code]
Всего 6 строк. Сжатие в 7,5 раз, Карл!
PS Можно сделать действие в 4 строки без конструкции With..End With, но так код будет проще поддерживать. Что я имею ввиду?
Представьте себе ситуацию — у вас поменялся диапазон, для которого нужно выполнить действия. В случае с 4 строчками вам нужно будет его поменять в 4х местах, а в конструкции выше — только в 1м.