Notifications
Clear all

Tornar shape não selecionável

6 Posts
2 Usuários
0 Reactions
2,174 Visualizações
(@evilmaax)
Posts: 82
Trusted Member
Topic starter
 

Boa tarde

 

Tenho um código que cria um shape para realçar a linha selecionada que funciona corretamente.

O problema é que ao tentar selecionar uma célula daquela mesma linha muitas vezes acaba-se selecionando o shape e não a célula, por isso gostaria de tornar o shape "inselecionável", mas não encontrei uma propriedade para fazer isso.

 

Alguém conhece algo neste sentido?



Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim h, t, w As Variant

h = ActiveCell.Height
w = Range("a2:i2").Width
t = ActiveCell.Top

On Error Resume Next
ActiveSheet.Shapes("RectangleV").Delete

ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, t, w, h).Name = "RectangleV"
With ActiveSheet.Shapes("RectangleV")
.Fill.Visible = msoFalse
.Fill.Transparency = 20#
.Line.Weight = 2#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False

End With

End Sub
 
Postado : 26/08/2020 12:23 pm
Tags do Tópico
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa tarde, @evilmaax

Defina a propriedade Locked da Shape como True. Só que, pra ter o efeito desejado, tem que proteger a planilha com ou sem senha (método Protect).

 
Postado : 26/08/2020 1:56 pm
(@evilmaax)
Posts: 82
Trusted Member
Topic starter
 

Boa tarde @edsonbr

 

Já havia tentado essa propriedade e não obtive sucesso.

Para garantir fiz tudo de novo: planilha protected, célula locked, célula hidden, workbook protected...nada. Se tiver outra sugestão te agradeço.

 
Postado : 26/08/2020 3:31 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 
Postado por: @evilmaax

workbook protected

não é Workbook e sim Worksheet.

Faça um teste manualmente: insira uma forma qualquer, selecione ela, botão direito, tamanho e propriedades, propriedades, bloqueado.

Agora Revisão > Proteger Planilha > mantenha Editar Objetos como não e OK.

Tente selecionar o objeto agora, veja que não é possível.

 
Postado : 26/08/2020 3:50 pm
(@evilmaax)
Posts: 82
Trusted Member
Topic starter
 

@edsonbr, consegui após lembrar que ao bloquear a planilha eu estava com a opção "editar objetos" marcada, ou seja, permitindo sua seleção. Ao desmarcar essa caixinha e bloquear a planilha o objeto não pode mais ser selecionado, porém, também para de funcionar como o esperado, já que a cada iteração ele precisa ser deletado e criado novamente.

Creio que não tenha solução nesse meu caso, já que o objeto precisa ser editável 

 
Postado : 26/08/2020 4:01 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Pq vc não usa o método Protect no próprio VBA? Definindo a propriedade UserInterfaceOnly como True, o usuário não poderá editar a forma, mas ela poderá ser editada via código sem precisar ficar desprotegendo/protegendo toda hora (faz-se isso apenas 1 vez já que a propriedade só pode ser definida no método Protect).

Mas que mal lhe pergunte, porque vc tem que deletar o retângulo para recriá-lo logo em seguida mesmo?

 
Postado : 26/08/2020 8:13 pm