End With
End Sub
Инструкция With
End Sub
Do
End Sub
DO
LotteryEntry = Int(10 * Rnd())
Beep
Loop Until LotteryEntry =7
MsgBox "Выпал номер " & LotteryEntry & ". Вы выиграли!"
А теперь заменим ключевое слово Until в конце цикла словом While. Тогда мы сможем вернуть в условие знак неравенства вместо знака равенства:
Sub DoLoopWhile()
Dim LotteryEntry As Integer
LotteryEntry = Int(10 * Rnd())
Beep
Loop While LotteryEntry <> 7
MsgBox "Выпал номер " & LotteryEntry & ". Вы выиграли!"
Инструкция With позволяет существенно сократить обращение к объекту и обладает тремя основными достоинствами: уменьшает объем кода, делает его понятнее и производительнее.
Чтобы лучше уяснить действие этой инструкции, рассмотрим два фрагмента кода, решающих одну и ту же задачу: один (БезИспользованияWith) — без использования With, второй (With_Инструкция) — ее средствами.
Sub БезИспользованияWith()
ActiveWorkbook.Worksheets(2).Range("A1").Font.Bold = True
ActiveWorkbook.Worksheets(2).Range("A1").Font.Italic = True
ActiveWorkbook.Worksheets(2).Range("A1").Font. Size = 22
ActiveWorkbook.Worksheets(2).Range("A1").Font. Name = _
|
|
"Times New Roman"
ActiveWorkbook.Worksheets(2).Range("A1").Font.Colorlndex = 3
Worksheets(2).Select
Здесь для изменения свойств объекта Font ячейки A1 второго рабочего листа пришлось ввести 5 команд, состоящих более чем из 360 символов. В этих командах мы 21 раз обращались к объектам и свойствам (рассчитывается по числу точек в инструкциях), а на каждое обращение уходит определенное время. Перепишем ту же программу, используя инструкцию With.
Sub With_Инструкция()
With ActiveWorkbook.Worksheets(2).Range("A1").Font
.Bold = True
.Italic = True
.Size =22
.Name = "Times New Roman"
.Colorlndex = 3
Worksheets(2).Select
Программа With_Инструкция содержит 202 символа (56% от объема БезИспользованияWith) и 9 обращений к объектам и свойствам (43%). Можно утверждать, что инструкция With в два раза уменьшает время, необходимое на ввод программы, и в два раза ускоряет ее выполнение. Сравнение этих примеров, конечно, не совсем корректно. В действительности число обращений к объектам в программе БезИспользованияWith можно сократить и без инструкции With. Тем не менее, ее преимущества видны здесь ясно. Естественно, далеко не всегда использование этой инструкции приводит к таким заметным изменениям, и все-таки Ваши программы только выиграют, если Вы запомните следующее правило.
Замечание:
При любой возможности применяйте инструкцию With, чтобы сократить код, сделать его понятнее и производительнее..
Если Вы обращаетесь к объекту или свойству только однажды, применять инструкцию With, вероятно, бессмысленно. Ситуация меняется, когда Вам нужно сделать это несколько раз. Взгляните на следующий пример.
Sub Пример_с_With()
With ActiveWorkbook.Worksheets(3)
.Select
.Unprotect
With. Range("A1")
MsgBox.Value
.Value = 200
.RowHeight =60
.ColumnWidth = 20
.Font.Size = 20
.Interior.ColorIndex = 3