Código VBA para adicionar automaticamente um comentário se uma célula contém uma determinada letra

votos
0

Eu só comecei a aprender VBA na semana passada e agora estou tentando resolver o seguinte problema: se os usuários digitam em uma determinada letra (e apenas estas letras especificadas), em seguida, um comentário devem ser adicionados automaticamente para a célula selecionada. O comentário deve conter um pequeno cabeçalho e, em seguida, um texto explicativo, que é digitado pelo usuário. O código mostrado realmente funcionou, mas apenas para a primeira célula eu testei com. Então, quando eu executou pela primeira vez, o comentário apareceu automaticamente com o texto especificado como eu pretendia, mas na próxima célula isso não aconteceu. Mesmo reiniciar Excel não ajudou - agora mesmo a primeira célula não cria o comentário. É por isso que estou confuso.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim x

Application.EnableEvents = False

If Target.Value =  Then

    Application.Undo
    x = Target.Value
    Target.Value = 
    On Error Resume Next

    If (x = A) Or (x = B) Or (x = C) Or (x = D) Or (x = E) Then Target.Comment.Delete
    On Error GoTo 0   

ElseIf Target.Value = A Then
    Target.AddComment (explanationA: )

ElseIf Target.Value = B Then
    Target.AddComment explanationB: 

ElseIf Target.Value = C Then
    Target.AddComment explanationC: 

ElseIf Target.Value = D Then
    Target.AddComment explanationD: 

ElseIf Target.Value = E Then
    Target.AddComment explanationE: 

End If
End Sub

Eu ter especificado a Planilha e mudança.

existe a possibilidade, de que se destacam seleciona automaticamente o comentário depois que ele foi gerado, de modo que o usuário pode digitar algumas informações explicativo sem a necessidade de selecionar o comentário manualmente: Há também uma questão adicional, que seria de interesse para mim?

Ajuda é apreciada! Muito obrigado antecipadamente!

Publicado 10/10/2019 em 00:38
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

Você pode usar Option Compare Textna seção de declarações (superior) do seu módulo para permitir comparações para todo o módulo para ser case-insensitive.

Embora o código dentro do sub "MyCompare" rotina é idêntico, seu resultado é diferente:

Sub MyCompare

    Debug.print "a" = "A"
    ' Prints False

End Sub

Option Compare Text

Sub MyCompare

    Debug.Print "a" = "A"
    ' Prints True

End Sub

Mas de qualquer maneira, vamos chegar ao seu real problema. É com esta linha em seu código:

Application.EnableEvents = False

Observe a razão do seu código funcionou pela primeira vez foi porque você capturou o Worksheet_Changeevento. Mas agora você só desativada eventos neste código e nunca liguei de volta, portanto, você não será mais capaz de executar a sua Worksheet_Changerotina.

Apenas certifique-se de ligá-lo novamente antes de sair do seu código. Além disso, seria sensato para lidar com seus erros de uma forma que permitirá eventos em vez de parar prematuramente o seu código, que seria mantê-los desativado.

A maneira que eu normalmente ativar eventos sem executar um Sub é usando a janela de depuração. Imprensa Ctrl+ Gdentro do VBE para abrir esta janela, em seguida, dentro da janela basta digitar Application.EnableEvents = Truee pressionar Returne você acabou de mudar essa propriedade.

Respondeu 10/10/2019 em 02:55
fonte usuário

votos
0

Algo rápido e fácil seria assim abaixo;

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Select Case Target.Cells
    Case Is = "A": Target.AddComment ("explanationA: ")
    Case Is = "B": Target.AddComment ("explanationB: ")
    Case Is = "C": Target.AddComment ("explanationC: ")
    Case Is = "D": Target.AddComment ("explanationD: ")
    Case Is = "E": Target.AddComment ("explanationE: ")
End Select
On Error Resume Next
End Sub

Basta lembrar de colocar o código na folha que você quer que aconteça, e ele aparece seu caso sensível também.

Respondeu 10/10/2019 em 01:15
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more