Vídeo recomendado
https://youtu.be/diWPPPhW-9E

ModeloCadastro3ListView

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

ModeloCadastro3ListView

Mensagem por Diovanino Cassio »

Senhores,
Foi postado há bastante tempo um exemplo de LISTVIEW, conforme título acima.
Baixei o exemplo que mostra um cadastro de fornecedores através de formulários VBA, composto de um formulário de cadastro e outro de pesquisa, usando LISTVIEW.
Quando tento adaptar este exemplo ao meu sistema, utilizando controle de ligações telefônicas, e quando vou abrir o formulário para cadastro das ligações, sempre está me dando o erro de:
Erro em tempo de execução '1004"
O método 'Range' do objeto'_Global' falhou
Na planilha de "Configurações", deixei igual ao do exemplo, somente mudando o nome da planilha de ligações.
Gostaria de saber o porquê que minha planilha não está sendo encontrada, quando o código: Private Sub DefinePlanilhaDados(), está sendo executado.

Sds,
Diovanino Cássio


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: ModeloCadastro3ListView

Mensagem por Reinaldo »

Erro 1004 e um erro um tanto quanto generico, Muito provavelmente está se referindo a um objeto não encontrado.
Infelizmente não há uma "receita" que diga diretamente o que fazer; esta diretamente ligada ao seu projeto/estrutura/rotinas.
Poste seu modelo; poucos dados (altere para ficticios se necessario); que seja representativo da atual estrutura e erro. Assim podera obter uma ajuda mais direta e que atenda seus objetivos


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: ModeloCadastro3ListView

Mensagem por Diovanino Cassio »

Reinaldo,
Consegui resolver o problema, pois o mesmo estava relacionado há uma referência de nome incorreta na planilha de configurações, ok?
Agora estou com um outro problema, que como adaptei o modelo exemplo ao meu projeto, estou recebendo a mensagem de erro:
"A variável do objeto ou a variável do bloco 'with' não foi definida 91"
Tenho um formulário para controle de ligações e nele um botão de pesquisa que abre um outro formulário com a ListView. Acontece que após o erro na abertura deste formulário, o mesmo aparece com a ListView sem os dados das ligações.
Irei postar o meu projeto para ser verificado!
Anexos
Mensagem de erro VBA - Controle de Portaria.zip
Mensagem de erro VBA - Controle de Portaria.zip
Tela.jpg (125.41 KiB) Exibido 8290 vezes
Controle de Portaria.zip
Exemplo para averiguação de erro VBA
(422.46 KiB) Baixado 375 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: ModeloCadastro3ListView

Mensagem por Reinaldo »

Tambem em (http://www.planilhando.com.br/forum/vie ... 96#p120896), basicamente o problema reside na validação de valores na rotina de validação dos dados creio que o mesmo se da apenas em campos numéricos/data; lembro de ter havido uma outra situação referente a data e na época não consegui resolver mas propus um paliativo (que não recordo tambem).
Estou avaliando;mas se alguem mais puder....


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: ModeloCadastro3ListView

Mensagem por Diovanino Cassio »

Reinaldo,
Consegui resolver o problema da seguinte forma:
Fui gradativamente criando as minhas planilhas usando a planilha modelo (Cadastro de fornecedores), substituindo as colunas existentes, pelas colunas das minhas planilhas. Da mesma forma, fiz com os formulários, aproveitando ao máximo, os campos existentes do formulário modelo.
Após sucesso no primeiro formulário de cadastro feito a partir do modelo, fui criando os outros do meu sistema, que agora está funcionando perfeitamente.
Quero deixar aqui, os meus sinceros agradecimentos pelo seu esforço de tentar me ajudar com este erro, ok?


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: ModeloCadastro3ListView

Mensagem por Diovanino Cassio »

Senhores,

Como faço para mudar a cor da letra de uma determinada coluna no LISTVIEW?
Por exemplo, quero que a coluna nome, saia na cor vermelha.

Sds,
Diovanino Cássio


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: ModeloCadastro3ListView

Mensagem por Diovanino Cassio »

Todos os meus controles, utilizam o formulário de pesquisa do modelo supra citado.
Mas acontece que quando rodo uma determinada pesquisa, há uma repetição das colunas no LISTVIEW, à direita das colunas que foram preenchidas com os dados da pesquisa, deixando o meu formulário com um aspecto muito feio.
Abaixo, o código que utilizo para mostrar os valores no LISTVIEW:

Private Sub PopulaListBox(ByVal Datanf As String, _
ByVal serienf As String)
On Error GoTo TrataErro

Dim rst As ADODB.Recordset
Dim campo As Field
Dim myArrayTodos() As Variant
Dim i As Integer
Dim li As ListItem, fld As Field, ch As ColumnHeader

Dim Column As Long
Dim Counter As Long
Counter = 0

Set rst = PreecheRecordSet(Datanf, serienf)

'preenche o combobox com os nomes dos campos
'persiste o índice
Dim indiceTemp As Long
indiceTemp = cboOrdenarPor.ListIndex
cboOrdenarPor.Clear
For Each campo In rst.Fields
cboOrdenarPor.AddItem campo.Name
Next
'recupera o índice selecionado
cboOrdenarPor.ListIndex = indiceTemp

'Colunas a Preencher Inicia na Primeira
For i = 0 To rst.Fields.Count - 1 'For i = 1 : a partir da 2ª coluna
Set ch = lstLista.ColumnHeaders.Add(, , rst.Fields(i).Name)
'ch.Width = 48 'Define o Tamanho de Todas as COLUNAS
'MsgBox rst.Fields(i).Name
Next

'Clear the Column Headers
lstLista.ListItems.Clear

'coloca as linhas do RecordSet num Array, se houver linhas neste
If Not rst.BOF Then
Do While Not rst.EOF


'Preenche o LISTVIEW a partir da 1ª Coluna
Set li = lstLista.ListItems.Add(, "k" & rst.Fields(0), CheckNull(rst.Fields(0)))
'Fill in the rest of the columns
For i = 1 To rst.Fields.Count - 1
li.SubItems(i) = CheckNull(rst.Fields(i))
Next

rst.MoveNext 'Move to next record
Loop

'Define os Tamanhos das colunas automaticamente
Call TamanhoColAutomatico

End If
'atualiza o label de mensagens
If rst.RecordCount <= 0 Then
lblMensagens.Caption = rst.RecordCount & " registros encontrados"
Else
lblMensagens.Caption = rst.RecordCount & " registros encontrados"
End If


Exit Sub

' Fecha o conjunto de registros.
Set rst = Nothing
' Fecha a conexão.
'conn.Close

TrataSaida:
Exit Sub
TrataErro:
Debug.Print Err.Description & vbNewLine & Err.Number & vbNewLine & Err.Source
MsgBox Err.Description & vbNewLine & Err.Number & vbNewLine & Err.Source
Resume TrataSaida
End Sub
Anexos
ListView com Dados.jpg
ListView com Dados.jpg (246.74 KiB) Exibido 7634 vezes


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: ModeloCadastro3ListView

Mensagem por srobles »

Diovanino Cassio,

Vamos lá :
1) Mudar a cor de determinada coluna no ListView :
Na rotina que adiciona os itens ao ListView, adicione ao final :

Código: Selecionar todos

lstLista.ListItems(li).SubItems(numeroColuna).BackColor = vbRed
2)Repetição das colunas do ListView á cada pesquisa realizada:
Nesta linha do seu código, apenas são limpos os itens da lista

Código: Selecionar todos

'Colunas a Preencher Inicia na Primeira
For i = 0 To rst.Fields.Count - 1 'For i = 1 : a partir da 2ª coluna
Set ch = lstLista.ColumnHeaders.Add(, , rst.Fields(i).Name)
'ch.Width = 48 'Define o Tamanho de Todas as COLUNAS
'MsgBox rst.Fields(i).Name
Next

'Clear the Column Headers
lstLista.ListItems.Clear
Conforme a linha comentada, para limpar os cabeçalhos, altere para :

Código: Selecionar todos

'Clear the Column Headers
lstLista.ColumnHeaders.Clear
'Clear all ListItems
lstLista.ListItems.Clear 

'Colunas a Preencher Inicia na Primeira
For i = 0 To rst.Fields.Count - 1 'For i = 1 : a partir da 2ª coluna
'Esta linha adiciona novamente os cabeçalhos ao ListView
Set ch = lstLista.ColumnHeaders.Add(, , rst.Fields(i).Name)
'ch.Width = 48 'Define o Tamanho de Todas as COLUNAS
'MsgBox rst.Fields(i).Name
Next
Abs


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: ModeloCadastro3ListView

Mensagem por Diovanino Cassio »

Saulo, bom dia!

Primeiramente muito obrigado por sua interação ao meu problema.
A solução apresentada para a repetição das colunas, funcionou perfeitamente.
Agora, referente a mudança de cor dos dados de uma determina coluna, está me apresentando uma mensagem de erro, que é a seguinte: "Qualificador inválido", isso no SubItems.

Sds,
Diovanino Cássio


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: ModeloCadastro3ListView

Mensagem por srobles »

Diovanino, boa noite!

Amigo me desculpe. Acabei me equivocando na orientação de como colorir uma coluna em especifico.

Na verdade, para colorir a coluna em questão, use:

Código: Selecionar todos

lstLista.ListItems(li).SubItems(numeroColuna).ForeColor = vbRed
Apenas ressalto, que isso irá mudar a cor da fonte de todos os itens na coluna selecionada ok?

Deixo abaixo, um modelo para estudo.

Espero ter ajudado, e mais uma vez, desculpe pelo equivoco.

Abs
Anexos
modelo_Alterar_Cor_Colunas_ListView.zip
(29.92 KiB) Baixado 310 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder