Como fazer com que os valores das células do Excel não possam ser alterados por entradas de teclado

0

Vamos usar este arquivo Excel simples como exemplo para minha pergunta. Por favor, note que ele contém permuta macro script VBA.

Eu quero que as células na coluna B sejam somente leitura / imutáveis para as entradas do teclado, ou seja, não podemos atualizar as células inserindo valores no teclado. Mas esses valores são atualizáveis por meio da execução da macro MyPermute

Como posso chegar lá?

    
por Nam G VU 16.07.2013 / 17:56

1 resposta

1

Primeiro, escreva uma macro de proteção que proteja a entrada

Sub protect()

Worksheets("sheet1").protect "Password", UserInterfaceOnly:=True

End Sub
  1. Em seguida, vá para review - unprotect sheet e insira a senha para desproteger
  2. Agora vá para review - allow users to edit ranges
  3. Clique em new e defina o (s) intervalo (s) que você deseja que os usuários possam editar
  4. Clique em permissions e, em seguida, em add e insira o nome do objeto Everyone
  5. Agora, recue OK - OK - OK
  6. Execute a macro Protect para proteger tudo, exceto os intervalos definidos.
  7. Modifique sua macro para desbloquear, bloquear e bloquear (isso funcionará para qualquer macro)

    Sub MyPermute()
    Dim rng As Range
    Set rng = Range("A1:A10")
    
    Dim varValues As Variant
    Dim i As Long, j As Long, n As Long
    
    Worksheets("sheet1").Unprotect "Password"
    
    varValues = rng.Cells
    n = UBound(varValues, 1)
    For ii = 1 To 100
        i = MyRandomNum(1, n)
        j = MyRandomNum(1, n)
        subSwap varValues, i, j
    Next ii
    
    Range("B1:B10") = varValues
    
    Worksheets("sheet1").protect "Password", UserInterfaceOnly:=True
    
    End Sub
    

Arquivo do Excel modificado

    
por 17.07.2013 / 11:18