O erro está aqui:
Sheets("szTodayDate").Select
szTodayDate
não é o nome da planilha; é uma variável local que contém uma string representando o nome da planilha ... mas você a está usando como string literal , então o VBA está tentando cancelar a referência a um objeto de pasta que é literalmente chamado "szTodayDate" ... e como não consegue encontrá-lo, boom, erro em tempo de execução 9.
Remova as aspas duplas:
Sheets(szTodayDate).Select
Agora você estará desreferenciando um objeto de pasta com o nome do valor da variável szTodayDate
string, o que é provável o que você pretendia.
Próximos passos ...
Puxe a lógica de criação de folha em seu próprio procedimento separado; escrever procedimentos pequenos e especializados que façam uma coisa e façam bem , facilitarão muito a sua vida.
Você pode aproveitar os valores de retorno das funções: Worksheets.Add
retorna uma referência ao objeto de planilha criado - capturando essa referência em uma variável de objeto local, você remove a necessidade de Select
e, em seguida, descarta ActiveSheet
.
Você também pode fornecer um parâmetro destination para Range.Copy
, tornando toda a operação select-copy-select-paste uma linha única.
Public Function CreateReportSheet(ByVal reportDate As Date) As Worksheet
Dim reportSheet As Worksheet
Set reportSheet = AddNamedWorksheet(ThisWorkbook, Format$(reportDate, "dd.mm.yy"))
'only needed if the sheet doesn't exist at compile-time.
'if it *does* exist at compile-time, just set the sheet's (Name) property to "inputSheet".
'that identifier will then be globally available anywhere in the project.
'Dim inputSheet As Worksheet
'Set inputSheet = ThisWorkbook.Worksheets("DataInput")
inputSheet.Range("A:A").Copy reportSheet.Range("A:A")
Set CreateReportSheet = reportSheet
End Function
Public Function AddNamedWorksheet(ByVal wb As Workbook, ByVal sheetName As String) As Worksheet
Dim sheet As Worksheet
Set sheet = wb.Worksheets.Add
On Error Resume Next ' naming the sheet will throw if name already exists
sheet.Name = sheetName
On Error GoTo 0 ' restore error handling
Set AddNamedWorksheet = sheet
End Function