While not technically true, think of it this way
Workbooks("XYZ").Sheets("Sheet1").Range("a1)).Font.Bold = True
Requires the computer to read the hard drive and load the Workbook into memory, Look at Sheet1, Range A1, Then refer to the Font Object of that Range and set the Bold Property. Then it will unload all that from memory.
If the Next line merely changes the Font Size to 10, it must repeat all that. Again
Next, Change the Font.Name. Repeat again, all over again.
This is virtually three time faster.
With Workbooks("XYZ").Sheets("Sheet1").Range("a1").Font.
.Bold = True
.Size = 10
.Name = "Times New Roman"
'For every reference to Font, remove yet another load into and unload from memory
End With
While eliminating Select... Selection's doesn't give as drastic an advantage, it is still worthwhile, especially in loops, where the speed up is present in every iteration of the loop.
When speed is a concern, setting frequently accessed Objects to Variables helps because, once set, they stay in memory until the Sub is Ended.
For example, suppose you refer to Workbooks("XYZ") and several of its Sheets
Set Masterbook = Workbooks("XYZ.xlsx")
Masterbook.Sheets(1)
Masterbook.Sheets(2)
Is better
Referring to sheet1 even just twice
Set Sht1 = Masterbook.Sheets("Sheet1")
Is faster
The only time an Object Variable is not faster is when the code in a sub only refers to the Object one time.