If you really do need to cope with varying names, at varying indexes, then its easy enough to write a function to find the sheet, accomodating variations in the name as you need to.
For example:
Sub test()
Dim sheet As Excel.Worksheet
Set sheet = GetSheet("sheet2")
sheet.Activate
End Sub
'Returns first sheet with a matching name
Function GetSheet(toFind As String) As Excel.Worksheet
'First parse the name to find
toFind = ParseName(toFind)
'Loop through the sheets collection
For Each sheet In ActiveWorkbook.Sheets
'Check if the sheet name matches the one we're looking for.
If ParseName(sheet.name) = toFind Then
'If match then return
Set GetSheet = sheet
Exit For
End If
Next sheet
'Remember to handle no matches:
'Either raise an error or return Nothing depending on your requirements
End Function
'Common function for simplifying name for comparison purposes.
'This version allows for spaces in the name, and differences in Upper/Lower casing.
Function ParseName(toParse As String) As String
toParse = Replace(toParse, " ", "")
toParse = UCase(toParse)
ParseName = toParse
End Function