Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#37216
Galera,bom dia... estou tendo problemas num código: eu preciso bloquear alguns comandos básicos da planilha (ctrl C, ctrl V, etc...) para os usuários da rede.

A ideia é: apenas a chave do meu usuário e mais duas pessoas terão acesso para copiar, colar, etc... na planilha. Então eu dei um set no usuario e comparo com as 3 chaves que podem ter o acesso completo na planilha. Porém só funciona quando eu comparo a primeira chave no if. Segue o código:
Código: Selecionar todos
Private Sub Workbook_Open()

Dim wshNetwork As Object
Dim LogonName As Variant

Set wshNetwork = CreateObject("WScript.Network")  'localizo o nome do usuario logado no pc
LogonName = wshNetwork.UserName  'o usurio atual é ki2x

If Not LogonName = "tnnx" Or LogonName = ki2x Then 'aqui o "Or" não funcionou. Só pega se o ki2x estiver na primeira posição.

    With Application
        .CellDragAndDrop = False
   
 End With
        
    Application.OnKey "%{F11}", ""
    Application.OnKey "%{F8}", ""
    Application.OnKey "^x", ""
    Application.OnKey "^c", ""
    Application.OnKey "^v", ""
    Application.OnKey "^d", ""
    Application.OnKey "^{PGDN}", ""
    Application.OnKey "^{PGUP}", ""
    ActiveWindow.DisplayWorkbookTabs = False

Else
    
    ActiveWindow.DisplayWorkbookTabs = True

End If


End Sub

Alguma ideia? Obrigado
#37220
rhod escreveu: 'aqui o "Or" não funcionou. ~~~> experimente o "And" no lugar ;)
#37230
osvaldomp escreveu:
rhod escreveu: 'aqui o "Or" não funcionou. ~~~> experimente o "And" no lugar ;)
Valeu Osvaldomp!! Já tinha tentado com o "and" e tbm não funcionou, porém, achei outra solução. Troquei o "if" pelo "select case" e deu certinho! Vou postar o código aqui. 8-)
Código: Selecionar todos
Private Sub Workbook_Open()

Dim wshNetwork As Object
Dim LogonName As Variant

Set wshNetwork = CreateObject("WScript.Network")
LogonName = wshNetwork.UserName

Select Case LogonName

    Case Is = "tnnx"
        ActiveWindow.DisplayWorkbookTabs = True
    
    Case Is = "ki2x"
        ActiveWindow.DisplayWorkbookTabs = True
    
    Case Is = "rra8"
        ActiveWindow.DisplayWorkbookTabs = True
    
    Case Else
        With Application
        .CellDragAndDrop = False
    End With
        
    Application.OnKey "%{F11}", ""
    Application.OnKey "%{F8}", ""
    Application.OnKey "^x", ""
    Application.OnKey "^c", ""
    Application.OnKey "^v", ""
    Application.OnKey "^d", ""
    Application.OnKey "^{PGDN}", ""
    Application.OnKey "^{PGUP}", ""
    ActiveWindow.DisplayWorkbookTabs = False

    
End Select

End Sub
#37234
rhod escreveu: Já tinha tentado com o "and" e tbm não funcionou,
Funciona sim! Você é que se enrolou aí. ;) Veja o exemplo abaixo.
Código: Selecionar todos
Sub testeV1()
 If Not [A1] = "tnnx" And Not [A1] = "ki2x" And Not [A1] = "rra8" Then
  MsgBox "A1 não contém tnnx, nem ki2x e nem rra8"
 Else: MsgBox [A1]
 End If
End Sub
porém, achei outra solução. Troquei o "if" pelo "select case"
O Select Case pode ser simplificado conforme abaixo. :)
Código: Selecionar todos
Sub testeV2()
 Select Case [A1]
  Case Is = "tnnx", "ki2x", "rra8": MsgBox [A1]
  Case Else: MsgBox "A1 não contém tnnx, nem ki2x e nem rra8"
 End Select
End Sub
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord