Altere sua primeira macro para armazenar oriSheet
em outra variável no final dela;
Public oriSheetRecorder As String
oriSheet = InputBox("Please Name the Sheet?", vbOKCancel)
If oriSheet = False Or oriSheet = "" Then
MsgBox "Invalid Name"
Exit Sub
Else
ActiveSheet.Name = oriSheet
On Error Goto Errorhandler
oriSheetRecorder = oriSheet
oriSheet = ""
End If
Errorhandler:
MsgBox "Name of the active sheet is " , ActiveSheet.Name, "It is Invalid Name or an error has happened"
Exit Sub
Em seguida, no seu segundo Sub
, tenha isto:
Set sht = ThisWorkbook.Worksheets(oriSheetRecorder)
Set newsht = ThisWorkbook.Worksheets("sheet2")
O motivo pelo qual o seu código não funciona agora é porque você desmarca oriSheet
nesta linha: oriSheet = ""
mais tarde você não pode se referir a ele. Além disso, você não precisa (não deve) colocar "
em torno de uma variável. double-quote
no excel é para distinguir entre textos e comandos e variáveis. oriSheet
é uma variável que é uma string por sua definição, portanto, ela nunca precisa que "
seja identificada como texto.