Notifications
Clear all

Rotina parar quando achar textbox vazio

6 Posts
2 Usuários
0 Reactions
1,303 Visualizações
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
Topic starter
 

Bom-dia

Gostaria de uma rotina que:

Ao inicializar o UserForm percorresse a coluna A onde está o "código" (1, 2, 3,...) e assim por diante, quando achar um código com algum TextBox vazio no Formulário ele para. Depois de preencher o TextBox (se houver informação para preencher) continuar a rotina até achar o próximo TextBox vazio, no caso do mesmo código, até finalizar a última coluna desse código. Depois continuar para o próximo código.

Ex.: Ao inicializar o UserForm ele dispara a rotina...pega o primeiro código da coluna A "1" (como se eu digitasse no TextBox código "1") seria um AfterUpdate no TextBox que preenche o formulário.
Achou o TextBox vazio para e eu digito se necessário se não eu clico em um botão de comando e vamos para o próximo.

Seria possível !?

Att,

Francisco

 
Postado : 19/02/2018 8:10 am
(@klarc28)
Posts: 971
Prominent Member
 

Seria possível você anexar o arquivo?

 
Postado : 19/02/2018 8:25 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
Topic starter
 

Boa-tarde

Segue exemplo...

 
Postado : 19/02/2018 10:35 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
Topic starter
 

Boa-noite

Estou tentando terminar essa rotina, até a parte de achar o textbox vazio é tranquilo, mais o que eu preciso é que:

Ao inicializar o UserForm já comece a rotina, encontre o primeiro código e verifique as textbox e se estiverem todos preenchidos vá para o próximo código sem que eu precise apertar o botão Atualizar.

Att,

Francisco

 
Postado : 22/02/2018 5:39 pm
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub UserForm_Initialize()
      
Dim INTERVALO As Range
       
    Set INTERVALO = ThisWorkbook.Sheets("Plan2").Range("H2:H20")
        Dim cl As Object
    For Each cl In INTERVALO
        If cl.Value = "V" Then
            'supondo que a letra está na coluna H
            TextBox1.Text = ThisWorkbook.Sheets("Plan2").Range("A" & cl.Row).Value
            Exit Sub
        End If
    Next cl
    
    
Plan2.Activate

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Plan2") 'Cadastra ("range dinamica nomeada - Expande com a digitação")

Dim UltimaLinha As Object
Dim codigo As Integer
Set UltimaLinha = Plan2.Range("A100").End(xlUp)

linha = 2
codigo = TextBox1

ws.Select

linha = ws.Range("A:A").Find(codigo).Row

With ws

     .Cells(linha, 1) = TextBox1.Text
     .Cells(linha, 2) = TextBox2.Text
     .Cells(linha, 3) = TextBox3.Text
     .Cells(linha, 4) = TextBox4.Text
     .Cells(linha, 5) = TextBox5.Text
     .Cells(linha, 6) = TextBox6.Text
     .Cells(linha, 7) = TextBox7.Text

     .Cells(linha, 8) = "C"

'MsgBox ("Registro Alterado Com Sucesso !"), vbInformation, "Atenção!"

End With

'Limpar as caixas de texto

'TextBox1.Text = Empty
TextBox2.Text = Empty
TextBox3.Text = Empty
TextBox4.Text = Empty
TextBox5.Text = Empty
TextBox6.Text = Empty
TextBox7.Text = Empty

'Colocar o foco na primeira caixa de texto
TextBox1.SetFocus

'Call UserForm_Initialize
SendKeys "{TAB}"

Plan2.Activate




      
Dim INTERVALO As Range
       
    Set INTERVALO = ThisWorkbook.Sheets("Plan2").Range("H2:H20")
        Dim cl As Object
    For Each cl In INTERVALO
        If cl.Value = "V" Then
            'supondo que a letra está na coluna H
            TextBox1.Text = ThisWorkbook.Sheets("Plan2").Range("A" & cl.Row).Value
            Exit Sub
        End If
    Next cl
    
    

End Sub
 
Postado : 25/02/2018 3:53 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
Topic starter
 

klarc...deu ruim !

Mais à partir da sua idéia, fui tentando inserir de outras formas, porém a solução foi bem mais simples...!

Private Sub UserForm_Initialize()
     
Dim INTERVALO As Range
       
    Set INTERVALO = ThisWorkbook.Sheets("Plan2").Range("H2:H20")
        Dim cl As Object
    For Each cl In INTERVALO
        If cl.Value = "V" Then
            'supondo que a letra está na coluna H
            TextBox1.Text = ThisWorkbook.Sheets("Plan2").Range("A" & cl.Row).Value
            SendKeys "{TAB}" --> apenas add essa linha
            Exit Sub
        End If
    Next cl

End Sub

E no TextBox7_Exit eu add o SendKeys "{ENTER}" e funcionou da forma que eu queria, pelo menos nesse formulário simples.
Agora estou tentando adaptar em um formulário que tem "MultiPage".

Obrigado...!

 
Postado : 25/02/2018 8:38 pm