Ir ao conteúdo
  • Cadastre-se

Dois "Worksheet_Change" - Como unificar?


Posts recomendados

Bom dia galera!!!

Pessoal, só pra entenderem, sou iniciante em vba e acabei colocando em minha planilha dois códigos que contem:

Private Sub Worksheet_Change(ByVal Target As Range)

Mas não esta funcionando, pesquisei bastante e vi que não é possível existir dois, logo um dos códigos não funciona.

Alguém consegue me ajudar? Como posso adaptar o código para que os dois scripts funcionem?

É a ultima coisa que falta pra eu fechar o sisteminha hehehea

 

Abaixo segue imagem e anexo, a planilha exemplo.

Muito obrigado!!!!

 

Formulário - projeto2.zip

 

Capturar_5.thumb.JPG.caaea59d98fecf55b1b5439a9c609a00.JPG

 

 

Grande abraçoo!!

 

Link para o comentário
Compartilhar em outros sites

Amigos!!! CONSEGUI!!..

 

Caso alguém esteja com o mesmo problema, segue o código para estudos...

 

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, c As Range
    Dim cVal As String

    Const seuInterv As String = "C4,C5,C7,C8,C11,C12,C15:C21,C23,C26,C27,C31,C43,C46,C48,C49" '<= * Deixar maiusculas
    
    Set rng = Intersect(Target, Range(seuInterv))
    If Not rng Is Nothing Then
        Application.EnableEvents = False
        For Each c In rng
            cVal = c.Value
            Select Case True
                Case IsEmpty(cVal), IsNumeric(cVal), _
                        IsDate(cVal), IsError(cVal)
                Case Else
                    c.Value = UCase(cVal)
                    Call Worksheet_Change2(c)
            End Select
        Next c
        Application.EnableEvents = True
    End If
    
End Sub


Private Sub Worksheet_Change2(ByVal Target As Range)
    Dim rng As Range
    
    If Target.Count > 1 Then Exit Sub
    
    Const seuInterv As String = "C4,C5" '<= * Remover os acentos
    
    Set rng = Intersect(Target, Range(seuInterv))
    If Not rng Is Nothing Then
        
        Application.EnableEvents = False
         
         If InStr(Target.Value, "/") > 0 Then
            Target.Value = VBA.Replace(RemoveAcentos(Target.Value), " ", "")
         Else
            Target.Value = RemoveAcentos(Target.Value)
         End If
        
        Application.EnableEvents = True
    
    End If
End Sub

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...