Usando o nome da planilha VBA

0

Eu queria saber se há algum indicador para uma planilha no Excel. Digamos que eu tenha um código VBA que use o Nome da Planilha em algum momento, então eu mudo o nome da planilha, então eu preciso mudar este nome no meu código também. Existe alguma maneira de usar o indicador para uma planilha para que eu não precise alterar esse nome no meu código? Ou alguma outra maneira de usar uma planilha no código sem usar seu nome?

Obrigado pela sua ajuda.

    
por Aleksandra 06.04.2017 / 12:53

1 resposta

1

Dependendo do contexto, você tem algumas opções.

1. Use uma constante

Você pode declarar uma constante no topo do seu código, então você só precisa fazer uma mudança na constante para que ela afete cada ponto onde a constante é usada. Em vez de usar:

Set shtSheet = sheets("Sheet1")

Você pode usar:

Set shtSheet = Sheets(csSource)

por toda parte.

Declare uma constante usando Const <name> as <type> = <value>

Sub WorksheetVar()
    Const csSheetName As String = "Test"

    Sheets(csSheetName).Range("A1").Value = 1
    Sheets(csSheetName).Range("A2").Value = 2
    Sheets(csSheetName).Range("A3").Value = 3
End Sub

Ele não precisa definir o valor no código, mas permite atualizá-lo com mais facilidade, em vez de procurar pelo código em todos os lugares em que o nome é usado.

2. Use números de índice

Toda planilha tem um número e um nome, normalmente a posição da planilha nas guias. Isso permanecerá o mesmo, mesmo que o nome da planilha seja alterado, mas será alterado se a ordem de tabulação for alterada.

3. Use uma variável

Você pode obter uma variável de uma célula, outra macro, uma caixa de entrada, etc. Você pode usar isso para passar o nome da planilha para o seu código.

4. Use o nome do objeto da folha

Independente do nome exibido na planilha, cada folha tem um nome de objeto, normalmente o nome que tinha quando foi criado pela primeira vez. Se você olhar para o explorador de projetos à esquerda, verá que cada folha é listada como algo como 'Folha1 (Folha1)'. Se você alterou o nome de Sheet1 para Test, verá Sheet1 (Test) . Você pode usar esse nome de objeto inalterável para referenciar a folha conforme necessário, como se fosse uma variável.

Sub Sheetname()
    Sheet1.Range("A1").Value = 1
    Sheet1.Range("A2").Value = 2
End Sub

Pessoalmente, não gosto desse método, pois é fácil ficar confuso sobre qual folha é qual, mas certamente é uma opção para você.

    
por 06.04.2017 / 17:08