Notifications
Clear all

Marcar X com macro

14 Posts
3 Usuários
0 Reactions
2,417 Visualizações
(@marciobin)
Posts: 204
Estimable Member
Topic starter
 

Boa noite !
em busca pelo forum , não encontrei exatamente o que preciso .

alguem pode ajudar no seguinte .

Como faço para ao clicar numa celula a mesma marque um X .
AUTO REVERSE .Cliquei Marca o X , cliquei de nv desmarca o X .

Segue Modelo >>>>>>

 
Postado : 09/12/2017 10:13 pm
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range(Target.Address).Value = "X" Then
Range(Target.Address).Value = ""
Else
Range(Target.Address).Value = "X"
End If
End Sub
 
Postado : 09/12/2017 10:29 pm
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Range(Target.Address).Value = "X" Then
Range(Target.Address).Value = ""
Else
Range(Target.Address).Value = "X"
End If
End Sub
 
Postado : 09/12/2017 10:31 pm
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim INTERVALO As Range
    Set INTERVALO = ThisWorkbook.Sheets("Plan1").Range("D4:D23")
    Dim INTERVALO2 As Range
    Set INTERVALO2 = Application.Intersect(Target, INTERVALO)
    If Not INTERVALO2 Is Nothing Then
        If Range(Target.Address).Value = "X" Then
            Range(Target.Address).Value = ""
        Else
            Range(Target.Address).Value = "X"
        End If
    End If
End Sub
 
Postado : 09/12/2017 10:40 pm
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim INTERVALO As Range
    Set INTERVALO = ThisWorkbook.Sheets("Plan1").Range("D4:D23")
    Dim INTERVALO2 As Range
    Set INTERVALO2 = Application.Intersect(Target, INTERVALO)
    If Not INTERVALO2 Is Nothing Then
        If Range(Target.Address).Value = "X" Then
            Range(Target.Address).Value = ""
        Else
            Range(Target.Address).Value = "X"
        End If
    End If
End Sub
 
Postado : 09/12/2017 10:41 pm
(@klarc28)
Posts: 971
Prominent Member
 

Funcionou no arquivo anexo. Se não funcionar na sua planilha, crie outra, pois ela está estranha.

 
Postado : 09/12/2017 10:48 pm
(@marciobin)
Posts: 204
Estimable Member
Topic starter
 

Essa Macro ficou do jeito que quero

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim INTERVALO As Range
Set INTERVALO = ThisWorkbook.Sheets("Plan1").Range("D4:D23")
Dim INTERVALO2 As Range
Set INTERVALO2 = Application.Intersect(Target, INTERVALO)
If Not INTERVALO2 Is Nothing Then
If Range(Target.Address).Value = "X" Then
Range(Target.Address).Value = ""
Else
Range(Target.Address).Value = "X"
End If
End If
End Sub

porem quando seleciono mais de uma linha , ela da o erro 13

tem como tirar esse erro ?

caso nao tenha , uso essa de duplo clique .
vlew !!!

 
Postado : 09/12/2017 10:55 pm
(@marciobin)
Posts: 204
Estimable Member
Topic starter
 

seleciono mais de uma linha pra apagar varias linhas que eu quis dizer ai ....

 
Postado : 09/12/2017 10:55 pm
(@klarc28)
Posts: 971
Prominent Member
 

Veja se assim melhora:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim INTERVALO As Range
    Set INTERVALO = ThisWorkbook.Sheets("Plan1").Range("D4:D23")
    Dim INTERVALO2 As Range
    Set INTERVALO2 = Application.Intersect(Target, INTERVALO)
    If Not INTERVALO2 Is Nothing Then
    Application.EnableEvents = False
        If Range(Target.Address).Value = "X" Then
            Range(Target.Address).Value = ""
        Else
            Range(Target.Address).Value = "X"
        End If
        Application.EnableEvents = True
    End If
End Sub
 
Postado : 09/12/2017 11:00 pm
(@klarc28)
Posts: 971
Prominent Member
 

Este vídeo explica um código parecido:

https://www.youtube.com/watch?v=6yzzeWKbHAQ&t=806s

 
Postado : 09/12/2017 11:08 pm
(@marciobin)
Posts: 204
Estimable Member
Topic starter
 

quando seleciono mais de uma linha ele da o erro ainda , mais de boa ....

 
Postado : 09/12/2017 11:10 pm
(@klarc28)
Posts: 971
Prominent Member
 

Pode ser que assim melhora:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
    Dim INTERVALO As Range
    Set INTERVALO = ThisWorkbook.Sheets("Plan1").Range("D4:D23")
    Dim INTERVALO2 As Range
    Set INTERVALO2 = Application.Intersect(Target, INTERVALO)
    If Not INTERVALO2 Is Nothing Then
    Application.EnableEvents = False
        If Range(Target.Address).Value = "X" Then
            Range(Target.Address).Value = ""
        Else
            Range(Target.Address).Value = "X"
        End If
        Application.EnableEvents = True
    End If
End Sub
 
Postado : 09/12/2017 11:18 pm
(@marciobin)
Posts: 204
Estimable Member
Topic starter
 

Ficou bacana .
melhor do que tinha pensado , pois aassim ao selecionar ja apaga.
vlew

 
Postado : 09/12/2017 11:23 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

marciobin

Só faltou clicar na mãozinha para agradecer aos colaboradores.
Acesse o link abaixo para saber como funciona, pois você marcou a tua resposta com Resolvido e tem que marcar a resposta que te atendeu:

viewtopic.php?f=7&t=16757

[]s

Patropi - Moderador

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/12/2017 7:32 pm