Bom dia
Estava fazendo algumas melhorias no leiaute, e quando fui inicar novamente o projeto, o botão para iniciar não estava mais funcionando, la dentro ele habilitava uma macro para localizar e desbloquear para edição.
Olá.
Seguinte: Quando você pressiona o botão "Iniciar Registro" ele executa uma sub chamada Localizar.
Veja o código abaixo: Ele varre a planilha "TS" e realiza alguns testes, se favorecer ele chama outra sub "Desbloquear", senão ele mantém tudo bloqueado.
Entenda o que está sendo testado e conserte para ter o desbloqueio dos campos.
Sub Localizar() Dim UltimaLinha, i As Long Dim Resultado As VbMsgBoxResult UltimaLinha = Sheets("TS").Cells(Cells.Rows.Count, 1).End(xlUp).Row If UltimaLinha < 2 Then UltimaLinha = 2 For i = 2 To UltimaLinha If Sheets("TS").Range("A" & i).Value = FrmTerceiros.TextBox18.Value Then FrmTerceiros.Label21.Caption = Sheets("TS").Range("B" & i).Value Desbloquear Exit For End If Next If Sheets("TS").Range("A" & i).Value <> FrmTerceiros.TextBox18.Value Then Resultado = MsgBox("Cadastro não existe, digite um válido", vbYes, "Aviso") FrmTerceiros.TextBox18.Value = "" FrmTerceiros.TextBox18.SetFocus Bloquear End If End Sub
At
mas mesmo eu digitando o valor que corresponde dentro da planilha ele não desbloqueia.
valdecirrk,
Boa Tarde!
Bom... primeiro o seu TextBox18 (que é testado no código Localizar estava escondido atrás do TextBox22. Eu apenas coloquei ele visível no formulário em um local diferente. Veja onde deve colocá-lo no layout do seu Form.
Depois, no teste existente na rotina Localizar (para chamar a rotina Desbloquear) você estava tentando comparar Número com Texto. Então utilizei a função Val para transformar o conteúdo da caixa de texto em Número e assim fazer o teste corretamente. Veja se assim lhe atende.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
era isso mesmo, não me atentei, valeu mesmo.
É tudo que o Morel disse.
Trocar no código textbox18 por 22.
E compara número com número, ou seja, o valor recuperado da célula pode ficar armazenado em uma variável do tipo integer.
Veja como ficaria esse trecho:
Sub Localizar() Dim UltimaLinha, i As Long Dim Resultado As VbMsgBoxResult Dim Valor as Integer UltimaLinha = Sheets("TS").Cells(Cells.Rows.Count, 1).End(xlUp).Row If UltimaLinha < 2 Then UltimaLinha = 2 For i = 2 To UltimaLinha Valor = Sheets("TS").Range("A" & i).Value If Valor = FrmTerceiros.TextBox18.Value Then FrmTerceiros.Label21.Caption = Sheets("TS").Range("B" & i).Value Desbloquear Exit For End If
Outra coisa. Sua contagem inicia em 2 e na planilha "TS", os dados inicial em 1. Se mantiver assim, vai deixar de testar uma linha.
At