Джастин неверен. With...End With
конструкция - это не просто синтаксическая конфета, это еще и трюк с производительностью. Когда у вас есть путь к объекту, который включает в себя несколько точек (.), Увеличение производительности довольно заметно, особенно при зацикливании и / или работе с Types
(структурами).
Например, этот код:
For x = 1 to my_object.Employee.Records.Count
Debug.Print my_object.Employee.Records(x).ID
Next
будет намного быстрее как:
For x = 1 to my_object.Employee.Records.Count
With my_object.Employee.Records(x)
Debug.Print .ID
End With
Next
и, как указал @wqw, он, вероятно, будет еще быстрее (в зависимости от того, сколько свойств вам нужно получить доступ), например, так как он предлагает наименьшее количество переквалификации объекта:
With my_object.Employee.Records
For x = 1 to .Count
Debug.Print Item(x).ID
Next
End With
Дайте ему шанс, вы увидите разницу.