Consulte Folha que a entrada do usuário denominada

0

Depois de executar a macro e gerar dados nesta planilha original, solicito que o usuário nomeie a planilha original usando o código abaixo.

oriSheet = InputBox("Please Name the Sheet?", vbOKCancel)
If oriSheet = False Or oriSheet = "" Then
MsgBox "Invalid Name"
Exit Sub
Else
ActiveSheet.Name = oriSheet
End If
oriSheet = ""

Então eu corro outro sub, para pegar a oriSheet agora para filtrar.
É possível referir essa planilha usando variável?
Porque eu não pareço chegar lá com o erro "subscript out of range" no código abaixo.

Set sht = ThisWorkbook.Worksheets("oriSheet")
Set newsht = ThisWorkbook.Worksheets("sheet2")

Eu tirei as aspas duplas pensando por causa delas, oriSheet não é interpretado, como outras linguagens de programação. Mas ainda não está funcionando.

Achei que poderia ser fácil, mas passei horas nisso.
Eu fui no Google, lá está dizendo: "Há duas maneiras de se referir a planilha, por índice (mas o índice Idk) e por nome (mas o nome também Idk?)"

    
por ExcelNovice 11.04.2017 / 11:29

1 resposta

1

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.

    
por 11.04.2017 / 23:09