Notifications
Clear all

ERRO DE COMPILAÇÃO

12 Posts
1 Usuários
0 Reactions
1,669 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia, quando clico no botão para abrir o formulário de pesquisa esta dando erro de compilação: (Erro de compilação: O tipo definido pelo usuário não foi definido). Esta pesquisa deve funcionar desta maneira:
1 - Clico no botão para abrir o formulário de pesquisa;
2 - Digito no txtSearch o nome que procuro;
3 - Dou duplo clique no nome seleciono;
4 - O valor do código do material vai para a célula selecionada.

Private Sub frmPesq_Initialize()

    Dim RowNumber As Long
    Dim MaxRow As Long

    With lstv1
      .Gridlines = True
      .CheckBoxes = False
      .FullRowSelect = True
      .Font.Size = 10

      With .ColumnHeaders
        .Add , , "Código", 60
        .Add , , "Descrição", 250
        .Add , , "Un, 20"
      End With

      MaxRow = Plan2.Cells(Plan2.Rows.Count, 1).End(xlUp).Row
            
      For RowNumber = 2 To MaxRow
        If UCase(Plan2.Cells(RowNumber, 1)) Like "*" & UCase(txtSearch) & "*" Then
            .ListItems.Add , , Plan2.Cells(RowNumber, 1).Value
            .ListItems(RowNumber - 1).ListSubItems.Add , , Plan2.Cells(RowNumber, 2).Text
        End If
      Next RowNumber
      .View = lvwReport
    End With
End Sub

Private Sub txtSearch_Change()
        
txtSearch = UCase(txtSearch.Text)
        lastRow = Plan2.Cells(Rows.Count, "a").End(xlUp).Row
        lstv1.ListItems.Clear
        ' Adiciona itens
        For X = 2 To lastRow
            If UCase(Plan2.Cells(X, 2)) Like "*" & UCase(txtSearch) & "*" Then
                Set li = lstv1.ListItems.Add(Text:=Plan2.Cells(X, "a").Value)
                li.ListSubItems.Add Text:=Plan2.Cells(X, "b").Value
                li.ListSubItems.Add Text:=Plan2.Cells(X, "c").Value
            End If
        Next
    End Sub

Private Sub lstv1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
    With lstv1
        .SortOrder = IIf(.SortOrder = lvwAscending, lvwDescending, lvwAscending)
        .SortKey = ColumnHeader.Index - 1
        .Sorted = True
    End With

End Sub
Private Sub lstv1_DblClick()

    If Not lstv1.SelectedItem Is Nothing Then
        Plan2.Cells.Select = lstv1.SelectedItem.Text
        txtSearch = Empty
        
          
    End If

frmPesq.Hide
 

End Sub

silvajmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/08/2014 8:20 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Qual linha fica em amarelo quando acontece esse erro?
Bom esse erro acontece quando vc utiliza referências nas declarações de variáveis ou passagens de argumentos.
Eu posso chutar que o erro ocorre nessa linha (a que fica amarela):

ByVal ColumnHeader As MSComctlLib.ColumnHeader

Tentei baixar seu arquivo mas não consegui descompactá-lo. Na verdade, consegui, mas o conteúdo não é um arquivo xlsm, e sim uma série de xmls que formam a estrutura básica de um xlsx ou xlsm...

Tentei também renomear o 7z para xlsm e não deu certo. Favor use um formato mais, digamos, comum, tipo ZIP ou RAR. Tipo assim, nos ajude a te ajudar...

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/08/2014 8:05 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Seguindo na mesma linha do Fernando eu vou chutar que o problema estaria que ao Inicializar o Formulário você tem instrução para preencher o ListView baseado no Valor em txtSearch que acredito deve estar vazio (em Branco) e causando erro.

Tambem não consegui converter seu anexo.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 5:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro/Fernando bom dia e obrigado por me atender, vou enviar novamente o arquivo.

silvajmp

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 7:02 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reforçando novamente o que o Fernando disse:
Qual linha fica em amarelo quando acontece esse erro?

Como utilizo a v 2003 que abre xlsm atraves do path de conversão, neste anexo não obtive este erro, a não ser que nas versões atuais tenham se modificado o modo de se referir ao Userform, sua rotina incial deveria de ser:
Private Sub UserForm_Initialize(), e não:
Private Sub frmPesq_Initialize()

Ajustado isto, o único erro que obtive foi na hora de transferir para planilha:
Plan2.Cells.Select = lstv1.SelectedItem.Text - "Erro na propriedade select da classe Range" - você está selecionando todas as Celulas da plan2, então teremos o erro, precisa ajustar esta parte e captar a ultima linha preenchida na plan e definir quais colunas do listview quer enviar.

Pesquise no forum sobre enviar dados do listview para planilha.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 7:53 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

nossa tem ListView ali? nem vi.... Cara, P.D.M. (potencial para dar merda) lá em cima.

Muito cuidado om ListView, pode não estar disponível em algumas máquinas, o que parece ser seu problema.
E o pior, solução é recodificar tudo, ou , encontrar a biblioteca online ou sei la....

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 10:20 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro a linha que da o erro não se destaca em amarelo, mas fica somente selecionada, estou representando com a cor do texto em vermelho o erro.
E quando sugere em alterar frmPesq para UserForm o erro persiste no mesmo erro.

Private Sub lstv1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With lstv1
.SortOrder = IIf(.SortOrder = lvwAscending, lvwDescending, lvwAscending)
.SortKey = ColumnHeader.Index - 1
.Sorted = True
End With
End Sub

Fernando o ListBox seria uma opção, para evitar do ListView não estar disponível em todas as máquinas?

Mauro/Fernando
O interessante e que tenho outras planilhas com o mesmo ListView e não deu problema, fiz a cópia e adaptei para outro controle, apareceu esta caca.

silvajmp.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 11:12 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro/Fernando
O funcionamento será assim: Seleciono a célula onde receberá o código do material, clico na imagem da lupa para abrir o frmPesq, digito no txtSearch a descrição do material, ao encontrar dou duplo clique na linha do material desejado, onde o código do material será encaminhado para a célula selecionada.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 11:23 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O listbox é uma opção ao listview, mas nem se comparam em termos de funcionalidades bacanas.
O listview é muuuito mais legal, mas muito mais problematico qdo se fala em usar multiplos computadores e sistemas operacionais e versòes do office....

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 12:32 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Silva de fato, como o Fernando destacou, não tem comparação entre as funcionalidades e propriedades de um ListView e Listbox, e o maior problema é o que ele relatou, incompatibilidades de Bibliotecas entre as versões Office e Windows.

Mauro/Fernando
O interessante e que tenho outras planilhas com o mesmo ListView e não deu problema, fiz a cópia e adaptei para outro controle, apareceu esta caca.

Esta é uma das caracteristicas de erro que ocorre, veja, eu lido com o Listview a um bom tempo, e de um tempo pra cá quando começaram as atulaizações dos pacotes começou a ter erros e um deles é justamente este, em minha máquina funcionava perfeitamente, quando executava o mesno arquivo em outra máquina até mesmo com a mesma versão do Excel, simplesmente o Controle ListView sumia, e tinha de adicionar novamente e salvar o arquivo, tive muitos problemas, por isto ando evitando de utiliza-lo quando for algum arquivo para distribiur, se pesquisar no forum encontrara vários posts com este e outros tipos de problemas, tanto que o ListView não tem nem documentação apropriada para uso no excel.

Eu só não entendi quando diz que adaptou para outro controle ? Por um acaso está dizendo que trocou o ListView por Listbox ? Se for isto, não iráfuncionar mesmo e terá vários erros.
Se não for, veja se no arquivo que diz estar com erro, o ListView está adicionado no formulário, se sim, verifique se o nome está correto lstv1.
Se estiver tudo certo e o erro persistir elimine esta instrução que dá erro, ela serve só para classificar o listview pela coluna que clicar, e veja se terá outros erros.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 3:49 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro realmente tem razão eliminei a instrução do erro, e não deu mais erro, porem os dados que devem ser iniciados no ListView esta aparecendo conforme a imagem anexada, com os códigos dos materiais em todas as colunas e linhas e esta sem cabeçalho.

E, respondendo ao seu questionamento, os outros controles que menciono são planilhas que utilizam o mesmo conceito de ListView, eu só copiei e adaptei para outro controle da empresa, a unica diferença e que nos outros controles o ListView está adicionado ou e chamado por algum botão no formulário. Nunca usei o ListBox.

Bom temos duas coisas para resolver, uma são os dados que estão em desordem e sem cabeçalho no ListView, outra será ao dar duplo clique na linha desejada, código do material vai para a célula selecionada.

silvajmp.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2014 7:59 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Sobre isto eu já havia respondido e alertado noposts anteriores:
Tem de trocar:
Private Sub frmPesq_Initialize()
por :
Private Sub UserForm_Initialize()
1) os dados que estão em desordem e sem cabeçalho no ListView
Se não alterar o ListView é preenchido conforme a imagem que postou.

2) outra será ao dar duplo clique na linha desejada, código do material vai para a célula selecionada

Ajustado isto, o único erro que obtive foi na hora de transferir para planilha:
Plan2.Cells.Select = lstv1.SelectedItem.Text - "Erro na propriedade select da classe Range" - você está selecionando todas as Celulas da plan2, então teremos o erro, precisa ajustar esta parte e captar a ultima linha preenchida na plan e definir quais colunas do listview quer enviar.

No modelo que anexou, eu não tive nenhum problema com a instrução que eu disse para você apagar:
Private Sub lstv1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Se está tendo erro nesta instrução com certeza no modelo que está adaptando e não deve ser este que anexou tem algum outro problema, e estou quase certo que é referente ao nome que deu ao ListView, verifique.

3) temos duas coisas para resolver
No momento tenho varios projetos na fila a espera, se for muito urgente, pesquise no forum sobre enviar dados do listview para planilha.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/08/2014 6:01 am