none
Bloquear planilha para Edição! RRS feed

  • Pergunta

  • Bom dia,

    Estou desenvolvendo uma planilha para gerenciar o preenchimento de várias informações diárias corriqueiras do dia dia.

    Personalizei uma forma de cadastro como várias validações de dados, vários bloqueios para evitar o preenchimento equivocado. No código abaixo se refere ao botão cadastrar, preciso de ajuda para que na planilha que recebe as informações cadastradas o usuário que estiver alimentando as informações não consiga preencher as informações para planilha que recebe os dados, só consiga cadastrar informações pela planilha de lançamentos ou seja consiga incluir somente clicando no botão cadastrar.

    no segundo código abaixo, consigo bloquear a planilha que recebe os dados, onde bloqueia as informações cadastradas, não permitindo que o usuário consiga alterá-los. Agora meu objetivo é bloquear a planilha para que o usuário não consiga incluir informações. 

    Sub Cadastro_Troca_Veiculo() Dim ws As Worksheet Dim lRow As Long If Range("O12") = 1 Then MsgBox "Inclusão Invalida. Essa Troca já foi Cadastrado.", vbCritical, "Atenção" Exit Sub Else If Range("I10") = "" Or Range("l10") = "" Or Range("o10") = "" Or Range("R10") = "" Or Range("U10") = "" Or Range("F13") = "" Or Range("R15") = "" Then MsgBox " Favor prencher todos os campos especificados com *, caso contrário não será concluido o cadastro.", vbCritical, "Atenção" Exit Sub Else Set ws = ThisWorkbook.Sheets("Troca_Veiculo") With ws lRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 .Cells(lRow, "A") = Range("E34") .Cells(lRow, "B") = Range("F34") .Cells(lRow, "c") = Range("G34") .Cells(lRow, "d") = Range("H34") .Cells(lRow, "e") = Range("I34") .Cells(lRow, "f") = Range("J34") .Cells(lRow, "g") = Range("K34") .Cells(lRow, "h") = Range("L34") .Cells(lRow, "i") = Range("M34") .Cells(lRow, "J") = Range("N34") .Cells(lRow, "K") = Range("O34") End With MsgBox "Dados gravados com sucesso!", vbInformation Call Limpar_Troca_Veiculo Range("I10").Select End If End If End Sub


    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim rCell As Range
        
        With Me.Sheets("Troca_Veiculo")
        
            .Unprotect "9928"
            
            .Cells.Locked = False
            For Each rCell In .UsedRange
                If Len(Trim(rCell)) > 0 Then
                    rCell.Locked = True
                End If
            Next rCell
            
            .Protect "9928"
            
        End With

    segunda-feira, 16 de fevereiro de 2015 13:27

Respostas

  • Boa noite Adriano.

    Ou eu não entendi bem sua necessidade ou a solução é muito simples: se o objetivo é permitir a alteração da planilha apenas pela sua Macro, basta que a planilha que receberá os dados esteja com todas as suas células protegidas e que quando sua Macro for ativada ela simplesmente desbloqueie a planilha, escreva os dados e volte a protegê-la. Assim vc não precisa escolher as células que serão travadas antes de salvar o arquivo, como o realizado pela sua segunda função.

    Seria isto?

    Abraço.


    Filipe Magno

    terça-feira, 17 de fevereiro de 2015 01:18