Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Validar planilha ativa

Bom dia, estou realizando um projeto em vba e me surgiu a seguinte duvida, como eu posso validar se uma determinada aba de uma planilha está "ativa" sem selecionar ou abrir a mesma? Exemplo: Eu tenho 4 abas na mesma planilha, jan, fev , marco,dez Gostaria de montar um conjunto de ifs, ou select case que verificasse se eu estou na planilha jan ele irá selecionar a célula A2, se for fev B2, e assim por diante. Porém os comandos que eu me recordo só fazem abrir ou ativar determinada "aba", e não somente verificar se é a mesma que esta selecionada. Segue um exemplo do que eu tentei fazer.

  If (Workbooksheet("jan").Select) Then
         Range("A2").Select
    ElseIf (Worksheets("fev").Select) Then
         Range("B2").Select
    Else
        Worksheets("marco").Select
    End If

Lembrando que se eu estiver na planilha dez ele não entraria no if, nem no ElseIf, ele iria direto para o Else(para selecionar a planilha de marco).

3 respostas
solução!

Fala ai, tranquilo ?

Cara vi que está com essa duvida a uns dias, será que já conseguiu resolver? se sim compartilha conosco ?

Boa noite amigo!

Já tive um problema semelhante, porém resolvi de uma forma diferente. Fiz um código para armazenar em uma variável o nome da aba sempre que eu ativasse ela, repetindo o código para todas as abas. Sendo assim, minha variável sempre estaria atualizada com o nome da minha aba atual. Depois é só usar essa variável no seu if para saber onde selecionar. Segue exemplo de como ficaria o código, acho que se der uma adaptada na sua planilha, deve funcionar.

'Variavel global para armazenar o nome da aba
public VariavelNomeAba As String

'Metodo em todas abas para capturar o nome da aba
Private sub worksheets_activate()
    VariavelNomeAba = "Planilha 1"
End sub

'Select case para conferir a aba atual e selecionar
Select case(VariavelNomeAba)
    case "Planilha 1"
        Sheets("Planilha1").Range("A1").Select        
    case "Planilha 2"
        Sheets("Planilha1").Range("B2").Select
End select

Matheus resolver eu não resolvi, como estava preso a algum tempo decidi "ignorar" isto por hora e fazer o restante, assim que possível retorno para resolver este problema.

Jeferson, obrigado irei tentar adaptar no meu código assim que possível. :D