Four demos on referencing the same sheet multiple times ( from worst to best)
Public Sub demo1()
Sheets("Sheet1").Range("A1").Value = "Test"
Sheets("Sheet1").Range("A2").Value = "Test"
Sheets("Sheet1").Range("A3").Value = "Test"
End Sub
Public Sub demo2()
With Sheets("Sheet1")
.Range("A1").Value = "Test"
.Range("A2").Value = "Test"
.Range("A3").Value = "Test"
End With
End Sub
note the practice of giving the sheet Var a meaningful name that helps indicate intent (eg. its the target sheet )
Public Sub demo3()
Dim targetSh As Worksheet
Set targetSh = Sheets("Sheet1")
With targetSh
.Range("A1").Value = "Test"
.Range("A2").Value = "Test"
.Range("A3").Value = "Test"
End With
End Sub
Public Sub demo4()
Dim targetSh As Worksheet
Set targetSh = safeSetSheet(ThisWorkbook.Name, "Sheet1")
If targetSh Is Nothing Then Exit Sub
With targetSh
.Range("A1").Value = "Test"
.Range("A2").Value = "Test"
.Range("A3").Value = "Test"
End With
End Sub
Public Function safeSetSheet(wkBkName As String, sheetName As String) As Worksheet
Dim wkBk As Workbook
Dim wkSh As Worksheet
Dim errMsg As String, reason As String
Const REASON_PREFIX As String = "Could not locate required "
On Error Resume Next
Set wkBk = Workbooks(wkBkName)
If Err.Number > 0 Then
reason = REASON_PREFIX & "workbook."
GoTo errHandler
End If
Set safeSetSheet = wkBk.Sheets(sheetName)
If Err.Number > 0 Then
reason = REASON_PREFIX & "worksheet."
GoTo errHandler
End If
Exit Function
errHandler:
errMsg = reason & vbNewLine
errMsg = errMsg & "Workbook:" & vbTab & wkBkName & vbNewLine
errMsg = errMsg & "Worksheet:" & vbTab & sheetName & vbNewLine
MsgBox errMsg, vbCritical, "Process Aborted"
End Function
if this code has helped please consider clicking "add reputation" , thx 

Bookmarks