Notifications
Clear all

VBA bloqueio de colar valores e colar

2 Posts
2 Usuários
0 Reactions
597 Visualizações
(@fdorns)
Posts: 1
New Member
Topic starter
 

Olá pessoal, boa tarde!

Estou com um baita problema em uma planilha, depois de muito suor consegui adaptar um código de um forum americano ao meu caso, está funcionamento praticamente como eu esperava. No meu caso eu queria que o código bloqueasse o colar e colar como valor em 4 colunas específicas de uma aba. Mesmo que o usuário tente copiar de outra planilha e colar nesta que tem o código ele está bloqueando... porém, fazendo vários testes, vi que esse código não bloqueia o usuário, por exemplo, de copiar algo do bloco de notas e colar na aba que está com o bloqueio.

Será que vocês conseguem me ajudar? Não encontrei nada parecido no forum.

Segue o código que estou usando para vocês enxergarem e interpretarem melhor:

Dim MyDataObject As New DataObject
Dim OldTarget As Range



Private Sub EmptyClipboard()
  With MyDataObject
    .SetText ""
    .PutInClipboard
    .Clear
  End With
  Set OldTarget = Nothing
End Sub


Private Sub Workbook_Activate()
  If ActiveSheet Is Sheet1 Then EmptyClipboard
End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  If Sh Is Sheet1 Then EmptyClipboard
End Sub


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  
  
  Const ColumnCY& = 103, ColumnDH& = 112, ColumnDI& = 113, ColumnDG& = 111
  
  If Not Sh Is Sheet1 Then Exit Sub
  
  With Target
    If .Column = ColumnCY _
    Or .Column = ColumnDH _
    Or .Column = ColumnDI _
    Or .Column = ColumnDG Then EmptyClipboard
  End With
  
  If Not OldTarget Is Nothing Then
    With OldTarget
      If .Column = ColumnCY _
      Or .Column = ColumnDH _
      Or .Column = ColumnDI _
      Or .Column = ColumnDG Then EmptyClipboard
      
    End With
    
  End If
  
  Set OldTarget = Target

End Sub
 
Postado : 06/10/2015 1:31 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Proteger a planilha resolve seu problema, não sera possivel colar de nenhuma maneira.

Para rodar seus outros codigos desproteja a planilha no inicio do codigo e proteja no final

Para proteger a planilha desproteger a planilha e proteger ao termino do codigo faça assim:

Sub teste()

Sheets("Plan1").Unprotect ("123")

Cole toda sua rotina aqui

Sheets("Plan1").Protect ("123")

End Sub

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 06/10/2015 2:08 pm