Ir ao conteúdo
  • Cadastre-se

Formulário no Excel


RafaVillani

Posts recomendados

Fiz igual você falou, mas olha o resultado:

Os meus intervalos são: A3=Nome, B3=Tel-1, C3=Tel-2 e D3=Email, eis o código:

Private area As Range

Private Sub UserForm_Initialize()

Set area = Plan8.Range("A3:E3")

With Me.ListBox2

.ColumnHeads = True

.ColumnCount = area.Columns.Count

.RowSource = area.Address

End With

End Sub

Agora gostaria de saber tambem, como faço para incluir, e excluir contatos, a partir dos botões "Incluir", "Excluir", pegando os dados dos textbox.

Valeu!

post-29381-13884898618351_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Observe que no código abaixo, uso a primeira coluna da tabela para procurar e excluir o registro. Vale lembrar que neste exemplo defini TextBox1 para ser o parâmetro de busca que a Sub-Rotina vai usar para excluir o registro da planilha. Quando você clicar no Botão remover, a Sub-rotina removeRegistro fará uma busca em todas as linhas (preenchidas) da coluna 1 e se encontrar o valor a ser removido, a linha inteira será deletada. Feito isso, intervalo de ListBox será atualizado, o mesmo ocorrerá quando você adicionar um registro, este será incluido na ultima linha da tabela e ListBox atualizado em seguida.


Option Explicit

Private areaAdicionar   As Range
Private ultimaLinha     As Integer
Private nx              As Range

Private Sub cmdAdicionar_Click()
   
   Cells(ultimaLinha, 1) = TextBox1.Text
   Cells(ultimaLinha, 2) = TextBox2.Text
   Cells(ultimaLinha, 3) = TextBox3.Text

   ListBox1.RowSource = areaTabela.Address
End Sub

Private Sub cmdRemover_Click()
   Call removeRegistro(TextBox1.Text)
End Sub

Private Sub removeRegistro(registro As String)
   
For Each nx In areaTabela.Resize(areaTabela.Rows.Count, 1)
   If nx = registro Then
       nx.EntireRow.Delete xlUp
       Exit For
   End If
Next nx

   ListBox1.RowSource = areaTabela.Address
End Sub

Private Function areaTabela() As Range

   ultimaLinha = Range("A" & Rows.Count).End(xlUp).Row + 1

   Set areaTabela = Range("A2:C" & ultimaLinha)
   
End Function


Private Sub UserForm_Initialize()
With Me.ListBox1
   
   .ColumnHeads = True
   .ColumnCount = areaTabela.Columns.Count
 
   .RowSource = areaTabela.Address
       
End With
End Sub

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por RafaVillani@08 de novembro de 2005, 09:13

beleza, Oliver, mas e o problema da listbox? A divisão esta correta na linha 0, mas as palavras estão na linha 1, como resolvo isso?

Abraços

Analisando o trecho do código que você postou, verifiquei que você está atribuindo a penas uma linha (A3:E3), a forma correta de carregar o intervalo é a partir do primeiro lançamento da tabela. Quando você fizer a atribuição de area, deve ser uma linha a baixo da linha com os campos.

Set area = Plan8.Range("A3:E3")

Observe o ultimo código que eu postei, o range começa de A2 e vai até a ultima linha da tabela, mas os campos começam em A1, ou seja, A1 = Código, B1 = Nome e C1 endereço.

Set areaTabela = Range("A2:C" & ultimaLinha)

Link para o comentário
Compartilhar em outros sites

Está tudo indo muito bem, valeu pela força. Gostaria de saber se tem como fazer uma pesquisa na listbox via textbox (tipo um findnearest do delphi), ou com commandbutton? E tem como a listbox organizar por ordem alfabética? E como faço para que ao excluir o comando procure na coluna F e não na A?

Link para o comentário
Compartilhar em outros sites

1) Pesquisa:


Private Sub cmdPesquisar_Click()
Dim i       As Integer
Dim texto   As String
Dim achou   As Boolean

For i = 0 To ListBox1.ListCount - 1
   
   If txtPesquisa <> "" Then
   
       texto = ListBox1.List(i, 0)
   
       If texto = txtPesquisa Then
           ListBox1.ListIndex = i
           achou = True
           Exit For
       End If


   Else
       MsgBox "Entre com um valor para pesquisar", vbExclamation
       Exit For
   
   End If

Next i

If achou = False And txtPesquisa.Text <> "" Then
 MsgBox "Não foi possível encontrar, " & txtPesquisa.Text, vbExclamation
End If

End Sub

2) Ordem alfabética:


Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   
areaTabela.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 
End Sub

Observe que organizo a tabela na planilha e atualiza ListBox.

3) Excluir Registro:

Para excluir o registro com base na coluna F, você deve deslocar cinco colunas de range da estrutura For Each...Next (.Offset(0, 5)), na Sub-Rotina removeRegistro:


Private Sub removeRegistro(registro As String)
   
For Each nx In areaTabela.Resize(areaTabela.Rows.Count, 1).Offset(0, 5)
   If nx = registro Then
       nx.EntireRow.Delete xlUp
       Exit For
   End If
Next nx

   ListBox1.RowSource = areaTabela.Address
End Sub

Link para o comentário
Compartilhar em outros sites

Hehehe, a planilha ta ficando bacana, mas agora uma ultima coisa (eu acho), tipo, em minha planilha tenho 3 empresas (PLan5, Plan6, PLan7), cada uma tem um form (2,3,4) com seu respectivo listbox, gostaria de saber se tem como, eu ao excluir um dado de qualquer um dos forms (2,3,4) e das Plan (5,6,7), teria jeito de mandar o dado excluido para outra planilha (Plan12), e para um outro form (Form8)? Mais uma coisa, tem como colocar mascaras nos textbox? tipo CPF, eu digito 00000000000 e a mascara sair assim 000.000.000-00. Tenho um msgbox com vbcritical + vbyesno com o seguinte codigo:

If vbYes Then

Cancelar = 0

Unload Me

quero que ao apertar sim, ele feche o form, e ao apertar não feche apenas o msgbox, mas o que ta acontecendo é o seguinte, ao apertar o não o form tabmé se fecha, como resolvo isso?

Valeu pela força amigo :-BEER

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!