Ir ao conteúdo

Excel Macro funcionar somente em uma planilha especifica


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Boa tarde novamente, 

 

É possível rodar uma macro apenas em uma planilha somente, e na outra manter desabilitada?

 

possuo um código em "EstaPasta_de_trabalho" para ao abrir a pasta bloquear as teclas e números com o objetivo de não haver digitação manual na Plan1, porém na Plan2 gostaria de manter essas teclas habilitadas

 

Resumindo: o objetivo é manter bloqueado a digitação de teclas na Plan1 e liberado na Plan2

 

o código que uso é o seguinte

 

Private Sub WorkBook_Open()

Call Desabilitando_Numeros
Call Desabilitando_teclas
Call Mouse_Off
Call Macro

End Sub

 

como faço para, ao abrir a Plan2 a digitação já esteja permitida? e ao voltar para a Plan1 esteja bloqueada?

  • Solução
Postado

@Rafael nunes da silva  Você pode criar uma sub para desbloquear as teclas e no evento Workbook_SheetActivate (em EstaPasta_de_trabalho) usar o nome da planilha como critério para chamar as macros, p.ex,

 

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Plan1" Then
        Call Desabilitando_Numeros
    Else
        Call Habilitando_Numeros
    End If
End Sub

 

 

  • Curtir 1
Postado

Se os códigos que desabilitam as teclas atuam no nível da aplicação, o que é provável, então você pode contornar desabilitando ao ativar a Plan1 e resetando ao desativá-la. Conforme os dois códigos abaixo, que deverão ser instalados no módulo da Plan1, para acessar clique com o direito na guia daquela planilha e escolha Exibir Código. Serão necessárias 8 macros: as 4 existentes para desabilitar e outras 4 para resetar. O código que você postou acima poderá ser desativado.

Curiosidade: como você está resetando o funcionamento do teclado ?
 

Private Sub Worksheet_Activate()
'coloque aqui os códigos para desabilitar
End Sub

Private Sub Worksheet_Deactivate()
 'coloque aqui os códigos para resetar
End Sub

 

Se forem viáveis no seu caso, existem soluções mais simples para impedir a digitação em uma certa coluna, por exemplo na coluna B:

1. bloqueie as célula da coluna B e proteja a planilha ou

2. utilize um código no módulo da planilha para "remover" a seleção caso seja selecionada manualmente alguma célula da coluna B, conforme abaixo, assim você utilizaria uma única macro ao invés de 8.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Column = 2 Then Target.Offset(, 1).Activate
End Sub

 

Lembrando que as soluções que dependem de macros poderão se tornar inúteis caso o usuário desabilite macros ao abrir o arquivo.

Postado
17 horas atrás, Midori disse:

@Rafael nunes da silva  Você pode criar uma sub para desbloquear as teclas e no evento Workbook_SheetActivate (em EstaPasta_de_trabalho) usar o nome da planilha como critério para chamar as macros, p.ex,

 

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Plan1" Then
        Call Desabilitando_Numeros
    Else
        Call Habilitando_Numeros
    End If
End Sub

 

 

show de bola funcionou muito bem, muito obrigado.

17 horas atrás, osvaldomp disse:

Se os códigos que desabilitam as teclas atuam no nível da aplicação, o que é provável, então você pode contornar desabilitando ao ativar a Plan1 e resetando ao desativá-la. Conforme os dois códigos abaixo, que deverão ser instalados no módulo da Plan1, para acessar clique com o direito na guia daquela planilha e escolha Exibir Código. Serão necessárias 8 macros: as 4 existentes para desabilitar e outras 4 para resetar. O código que você postou acima poderá ser desativado.

Curiosidade: como você está resetando o funcionamento do teclado ?
 

Private Sub Worksheet_Activate()
'coloque aqui os códigos para desabilitar
End Sub

Private Sub Worksheet_Deactivate()
 'coloque aqui os códigos para resetar
End Sub

 

Se forem viáveis no seu caso, existem soluções mais simples para impedir a digitação em uma certa coluna, por exemplo na coluna B:

1. bloqueie as célula da coluna B e proteja a planilha ou

2. utilize um código no módulo da planilha para "remover" a seleção caso seja selecionada manualmente alguma célula da coluna B, conforme abaixo, assim você utilizaria uma única macro ao invés de 8.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Column = 2 Then Target.Offset(, 1).Activate
End Sub

 

Lembrando que as soluções que dependem de macros poderão se tornar inúteis caso o usuário desabilite macros ao abrir o arquivo.

Muito obrigado Osvaldo, funcionou direitinho porém me adaptei melhor com o código do colega acima por me parecer mais simples, mas ambas funcionaram muito bem.

 

Sobre a curiosidade, eu apagava o código que desabilitava para poder configurar ou inserir mais ideias a planilha e na sequencia testava pois estou ainda criando ela. Nos próximos dias se tudo der certo finalizarei ela e liberarei para o pessoal no trabalho usar.

 

Mais uma vez muito obrigado.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!