none
Correção de registos na folha de cálculo. RRS feed

  • Pergunta

  • Boa tarde.

    Num Userform, tenho uma Listbox e uma textbox. Digitando carateres na textbox, a listbox vai sendo preenchida com os nomes que contêm os carateres digitados na Listbox.

    Na Listbox, são apresentados numa só coluna, o nº da linha, seguido do nome que nessa linha se encontra gravado.

    A folha contem Nomes repetidos, pelo que esse facto deverá ser tido em conta, podendo os registos relativos a esse nome ser diferentes nas várias linhas.

    Ao selecionar um nome na Listbox, são exibidos em label's, os registos dessa linha, relativos a esse nome.

    Para o efeito utilizo as rotinas seguintes:

    Option Explicit
    
    Sub FillListBox()
    
    Sheets("DADOS").Unprotect
    Sheets("DADOS").Select
    
    Dim START As Integer
      ListBox1.Clear
      START = 2
      While Range("DADOS!C" & START).Value <> ""
    
        If InStr(1, Range("DADOS!C" & START).Value, TextBox1.Value, vbTextCompare) >= 1 Then
          ListBox1.AddItem START & "---" & Range("DADOS!C" & START).Value & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & START
        End If
        
    If TextBox1.Value = "" Then
    ListBox1.Clear
    End If
    
        START = START + 1
        
      Wend
    
    End Sub
    

    Private Sub ListBox1_Click()
      
      Dim LIN As Integer
      LIN = 1 * Mid(ListBox1.Value, InStr(1, ListBox1.Value, vbTab & vbTab, vbTextCompare))
      
    Label1.Caption = Range("DADOS!F" & LIN).Value
    Label2.Caption = Range("DADOS!J" & LIN).Value
    Label3.Caption = Range("DADOS!G" & LIN).Value
    Label7.Caption = Range("DADOS!K" & LIN).Value
    Label8.Caption = Range("DADOS!L" & LIN).Value
    Label4.Caption = Range("DADOS!H" & LIN).Value
    Label5.Caption = Range("DADOS!I" & LIN).Value
    
    End Sub
    
    Private Sub TextBox1_Change()
        
    Label1.Caption = ""
    Label2.Caption = ""
    Label3.Caption = ""
    Label7.Caption = ""
    Label8.Caption = ""
    Label4.Caption = ""
    Label5.Caption = ""
      FillListBox
       
    End Sub

    Por Textbox, pretende-se introduzir o texto retificativo, para alteração dos dados existentes, cuja rotina será associada ao botão "gravar", gravando apenas na linha em causa os dados constantes nas textbox que contiverem texto para alteração.

    Antecipadamente grato pela ajuda.

    M_A_L

    segunda-feira, 3 de março de 2014 15:47

Respostas

  • A resposta está no próprio código.

     Dim LIN As Integer
      LIN = 1 * Mid(ListBox1.Value, InStr(1, ListBox1.Value, vbTab & vbTab, vbTextCompare))
      

    Com esta linha de código, tudo se corrige automaticamente.

    Só é necessário atribuir as condições às textbox.

    M_A_L

    • Marcado como Resposta M_A_S_L quinta-feira, 6 de março de 2014 00:55
    quinta-feira, 6 de março de 2014 00:55