Using ActiveCell
or ActiveSheet
can be source of mistakes if (for any reason) the code is executed in the wrong place.
ActiveCell.Value = "Hello"
'will place "Hello" in the cell that is currently selected
Cells(1, 1).Value = "Hello"
'will always place "Hello" in A1 of the currently selected sheet
ActiveSheet.Cells(1, 1).Value = "Hello"
'will place "Hello" in A1 of the currently selected sheet
Sheets("MySheetName").Cells(1, 1).Value = "Hello"
'will always place "Hello" in A1 of the sheet named "MySheetName"
Active*
can create problems in long running macros if your user gets bored and clicks on another worksheet or opens another workbook.Sheets("MyOtherSheet").Select
and you've forgotten which sheet you were on before you start reading from or writing to it.