Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
ModeloCadastro3ListView
-
- Colaborador
- Mensagens: 53
- Registrado em: Qua Mar 15, 2017 11:31 am
Re: ModeloCadastro3ListView - Resolvido
Valeu Saulo!
Obrigado mais uma vez pela ajuda.
Sds,
Diovanino Cássio
Obrigado mais uma vez pela ajuda.
Sds,
Diovanino Cássio
-
- Colaborador
- Mensagens: 53
- Registrado em: Qua Mar 15, 2017 11:31 am
Re: ModeloCadastro3ListView
Senhores,
Como já disse aqui, sempre estou criando os meus formulários para o meu sistema, usando o modelo supra citado, ok?
Criei um formulário recentemente, para inserir as minhas despesas com manutenções dos nossos equipamentos, onde o mesmo busca informações sobre o equipamento em manutenção, de uma planilha de controle dos equipamentos (em anexo parte do meu formulário).
Estou necessitando fazer o seguinte:
Assim que o equipamento a ser enviado para manutenção for escolhido, preciso mostrar no campo ao lado o seu número de série, que também consta na planilha de controle de equipamentos.
como eu conseguiria mostrar este serial no meu formulário?
Segue abaixo, o código para carregar a relação dos equipamentos, que eu escolho em uma combo de equipamentos:
Private Sub UserForm_Activate()
Dim SourceWB As Workbook
Dim ListItems As Variant
Dim i As Integer
Application.ScreenUpdating = False
Call LimpaControles
Call HabilitaBotoesAlteracao
With Me.cboEquipto
.Clear ' Limpa a combobox
' Abre arquivo de origem com somente leitura
Set SourceWB = Workbooks.Open("\\140.1.0.222\Base de Dados NGLPA\Controles TI\Planilhas\CTHS.xlsx", _
False, True)
ListItems = SourceWB.Worksheets(1).Range("e2", Range("e400").End(xlUp)).Value
SourceWB.Close False ' fechar o Arquivo de origem sem salvar as alterações
Set SourceWB = Nothing
ListItems = Application.WorksheetFunction.Transpose(ListItems)
For i = 1 To UBound(ListItems)
.AddItem ListItems(i)
Next i
.ListIndex = -1
End With
Call OrdenaComboEquipto
End Sub
Sds,
Diovanino Cássio
Como já disse aqui, sempre estou criando os meus formulários para o meu sistema, usando o modelo supra citado, ok?
Criei um formulário recentemente, para inserir as minhas despesas com manutenções dos nossos equipamentos, onde o mesmo busca informações sobre o equipamento em manutenção, de uma planilha de controle dos equipamentos (em anexo parte do meu formulário).
Estou necessitando fazer o seguinte:
Assim que o equipamento a ser enviado para manutenção for escolhido, preciso mostrar no campo ao lado o seu número de série, que também consta na planilha de controle de equipamentos.
como eu conseguiria mostrar este serial no meu formulário?
Segue abaixo, o código para carregar a relação dos equipamentos, que eu escolho em uma combo de equipamentos:
Private Sub UserForm_Activate()
Dim SourceWB As Workbook
Dim ListItems As Variant
Dim i As Integer
Application.ScreenUpdating = False
Call LimpaControles
Call HabilitaBotoesAlteracao
With Me.cboEquipto
.Clear ' Limpa a combobox
' Abre arquivo de origem com somente leitura
Set SourceWB = Workbooks.Open("\\140.1.0.222\Base de Dados NGLPA\Controles TI\Planilhas\CTHS.xlsx", _
False, True)
ListItems = SourceWB.Worksheets(1).Range("e2", Range("e400").End(xlUp)).Value
SourceWB.Close False ' fechar o Arquivo de origem sem salvar as alterações
Set SourceWB = Nothing
ListItems = Application.WorksheetFunction.Transpose(ListItems)
For i = 1 To UBound(ListItems)
.AddItem ListItems(i)
Next i
.ListIndex = -1
End With
Call OrdenaComboEquipto
End Sub
Sds,
Diovanino Cássio
- Anexos
-
- Formulario.jpg (22.27 KiB) Exibido 5953 vezes
Re: ModeloCadastro3ListView
Diovanino,
Primeiro, adicione um novo módulo á sua pasta de trabalho e nele, cole o que segue :
Agora, no seu formulário, experimente substituir a rotina existente pela que deixo abaixo:
E no evento Change do ComboBox :
Espero ter ajudado.
Abs
Primeiro, adicione um novo módulo á sua pasta de trabalho e nele, cole o que segue :
Código: Selecionar todos
Public ListSeriais As Variant
Public retornoSerial As String
Function retornaSerial (ByVal CodEquip As Long)
For vID = 1 To Ubound(ListSeriais)
If vID = CodEquip Then
retornoSerial = ListSeriais(vID)
Exit For
End If
Next
End Function
Código: Selecionar todos
Private Sub UserForm_Activate()
Dim SourceWB As Workbook
Dim ListItems As Variant
Dim i As Integer
Application.ScreenUpdating = False
Call LimpaControles
Call HabilitaBotoesAlteracao
With Me.cboEquipto
.Clear ' Limpa a combobox
' Abre arquivo de origem com somente leitura
Set SourceWB = Workbooks.Open("\\140.1.0.222\Base de Dados NGLPA\Controles TI\Planilhas\CTHS.xlsx", _
False, True)
ListItems = SourceWB.Worksheets(1).Range("e2", Range("e400").End(xlUp)).Value
'Aqui criamos a lista com os seriais
'Mude a letra da coluna para a correspondente na planilha
ListSeriais = SourceWB.Worksheets(1).Range("e2", Range("e400").End(xlUp)).Value
SourceWB.Close False ' fechar o Arquivo de origem sem salvar as alterações
Set SourceWB = Nothing
ListItems = Application.WorksheetFunction.Transpose(ListItems)
'Criação da nova lista, que contem os seriais
ListSeriais = Application.WorksheetFunction.Transpose(ListSeriais)
For i = 1 To UBound(ListItems)
.AddItem ListItems(i)
Next i
.ListIndex = -1
End With
Call OrdenaComboEquipto
End Sub
Código: Selecionar todos
Private Sub ComboBox1_Change()
'Se o valor do combo for diferente de nulo
If ComboBox1 <> "" Then
'Chamamos a função para retornar os dados do equipamento
'com base no Indice do combobox +1
'Pois a listagem no combobox começa em 0
'e para retornar os dados começamos em 1
retornaSerial ComboBox1.ListIndex + 1
With Me
'Preenchemos os campos com os dados obtidos na função
.TextBox1 = retornoSerial
End With
Else
'Se o valor do combo for nulo
'Limpamos os campos
TextBox1 = ""
End If
End Sub
Abs
-
- Colaborador
- Mensagens: 53
- Registrado em: Qua Mar 15, 2017 11:31 am
Re: ModeloCadastro3ListView
Saulo, bom dia!
Na solução apresentada por você, estou tendo problema na execução do módulo, pois está me retornando uma mensagem de "tipos incompatíveis", veja o anexo:
Sds,
Diovanino Cássio
Na solução apresentada por você, estou tendo problema na execução do módulo, pois está me retornando uma mensagem de "tipos incompatíveis", veja o anexo:
Sds,
Diovanino Cássio
- Anexos
-
- ErroExecModulo.jpg (50.19 KiB) Exibido 5926 vezes
Re: ModeloCadastro3ListView
Diovanino,
Estranho amigo, pois copiei e colei os códigos em uma nova pasta para testes e não enfrentei o problema.
Todavia, experimente o que segue abaixo.
Espero que te ajude.
Abs
Estranho amigo, pois copiei e colei os códigos em uma nova pasta para testes e não enfrentei o problema.
Todavia, experimente o que segue abaixo.
Código: Selecionar todos
Public ListSeriais As Variant
Public retornoSerial As String
Function retornaSerial(ByVal CodEquip As Long)
Dim vID As Long
For vID = 1 To UBound(ListSeriais)
If vID = CodEquip Then
retornoSerial = ListSeriais(vID)
Exit For
End If
Next
End Function
Abs
-
- Colaborador
- Mensagens: 53
- Registrado em: Qua Mar 15, 2017 11:31 am
Re: ModeloCadastro3ListView - [Resolvido]
Saulo,
Me desculpe, mas o erro estava acontecendo porquê eu tinha colocado o BLOCO do CHANGE, em local incorreto. Estava sendo executado antes da abertura da planilha contendo os dados, ok?
Mais uma vez, te agradeço muito pela ajuda.
Sds,
Diovanino Cássio
Me desculpe, mas o erro estava acontecendo porquê eu tinha colocado o BLOCO do CHANGE, em local incorreto. Estava sendo executado antes da abertura da planilha contendo os dados, ok?
Mais uma vez, te agradeço muito pela ajuda.
Sds,
Diovanino Cássio
-
- Colaborador
- Mensagens: 53
- Registrado em: Qua Mar 15, 2017 11:31 am
Re: ModeloCadastro3ListView
Saulo, boa tarde!
Já estou em fase final do meu sistema, e gostaria de aproveitar os vossos conhecimentos, para tentar solucionar um problema que tenho:
A maioria dos meus formulários, possui COMBOX que efetua o carregamento de informações, provenientes de outras planilhas (Exemplo: formulário custo de manutenção, tem COMBOX que busca dados da planilha contendo as informações dos equipamentos (campo codigoequipamento).
Gostaria que sempre que estivesse no formulário de controle dos custos das manutenções, e eu clicasse no botão de VOLTAR, estas planilhas abertas forem fechadas. No print acima, necessito fechar a planilha customanut.xlsx.
Estou lhe enviando um print da tela para evidenciar melhor o que estou necessitando, ok?
Sds,
Diovanino Cássio
Já estou em fase final do meu sistema, e gostaria de aproveitar os vossos conhecimentos, para tentar solucionar um problema que tenho:
A maioria dos meus formulários, possui COMBOX que efetua o carregamento de informações, provenientes de outras planilhas (Exemplo: formulário custo de manutenção, tem COMBOX que busca dados da planilha contendo as informações dos equipamentos (campo codigoequipamento).
Gostaria que sempre que estivesse no formulário de controle dos custos das manutenções, e eu clicasse no botão de VOLTAR, estas planilhas abertas forem fechadas. No print acima, necessito fechar a planilha customanut.xlsx.
Estou lhe enviando um print da tela para evidenciar melhor o que estou necessitando, ok?
Sds,
Diovanino Cássio
- Anexos
-
- CodigoVBA.jpg (294.53 KiB) Exibido 5890 vezes
Re: ModeloCadastro3ListView
Diovanino,
Se as demais pastas de trabalho estiverem abertas na mesma instância do Excel, basta que você adicione ao código do botão voltar, a instrução :
Creio que isso resolva seu problema.
Abs
Se as demais pastas de trabalho estiverem abertas na mesma instância do Excel, basta que você adicione ao código do botão voltar, a instrução :
Código: Selecionar todos
'Fechar pasta de trabalho
'True = Fecha a pasta salvando alterações
'False = Fecha a pasta sem salvar as alterações
WorkBooks("nomedapastaafechar.xlsx").Close , True
Abs
-
- Colaborador
- Mensagens: 53
- Registrado em: Qua Mar 15, 2017 11:31 am
Re: ModeloCadastro3ListView
Saulo, bom dia!
Mais uma vez conto com a vossa ajuda para resolver os meus problemas de VBA, ok?
Tenho um problema no meus formulários de pesquisas, que é o ordenamento dos dados das colunas em ASCENDENTE e DESCENDENTE.
Uso o código VBA abaixo, para fazer ordenação de uma determinada coluna, quando clicar sobre ela.
Private Sub lstLista_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
' ordena a coluna ao clicar no título da mesma
lstLista.Sorted = False
lstLista.SortKey = ColumnHeader.Index - 1
If lstLista.SortOrder = lvwAscending Then
lstLista.SortOrder = lvwDescending
Else
lstLista.SortOrder = lvwAscending
End If
lstLista.Sorted = True
End Sub
Acontece que funciona bem, quando o dado é ALFA, mas quando é NÚMERO, ele não ordena na sequencia que pretendo que fique ordenado (ver arquivo em anexo).
Uma outra coisa que necessito, é que ao abrir o LISTVIEW, o meu último registro, seja o primeiro a ser mostrado, na primeira linha do LISTVIEW.
Sds,
Diovanino Cássio
Mais uma vez conto com a vossa ajuda para resolver os meus problemas de VBA, ok?
Tenho um problema no meus formulários de pesquisas, que é o ordenamento dos dados das colunas em ASCENDENTE e DESCENDENTE.
Uso o código VBA abaixo, para fazer ordenação de uma determinada coluna, quando clicar sobre ela.
Private Sub lstLista_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
' ordena a coluna ao clicar no título da mesma
lstLista.Sorted = False
lstLista.SortKey = ColumnHeader.Index - 1
If lstLista.SortOrder = lvwAscending Then
lstLista.SortOrder = lvwDescending
Else
lstLista.SortOrder = lvwAscending
End If
lstLista.Sorted = True
End Sub
Acontece que funciona bem, quando o dado é ALFA, mas quando é NÚMERO, ele não ordena na sequencia que pretendo que fique ordenado (ver arquivo em anexo).
Uma outra coisa que necessito, é que ao abrir o LISTVIEW, o meu último registro, seja o primeiro a ser mostrado, na primeira linha do LISTVIEW.
Sds,
Diovanino Cássio
- Anexos
-
- PrintTelaListView.jpg (391.55 KiB) Exibido 5802 vezes
Re: ModeloCadastro3ListView
Diovanino,
Desculpe a demora amigo.
Creio que se você formatar sua coluna Registro da planilha como texto e modificar sua rotina de Cadastro para adicionar o 0 (zero) em índices menores que 10, resolva seu problema.
A forma como a classificação desta coluna no ListView está sendo feita no momento, está correta, pois ela classifica na ordem numérica mesmo. Como o número 19 começa em 1, sempre virá á frente do 2 e assim por diante.
Agora, se você acrescentar o 0 (zero) nos registros menores que 10, verá que os dados serão carregados da forma que deseja.
Para exibir sempre o último registro como sendo o primeiro da lista, após adicionar os dados ao ListView, faça:
Todavia, deixo abaixo um modelo de exemplo.
Abs
Desculpe a demora amigo.
Creio que se você formatar sua coluna Registro da planilha como texto e modificar sua rotina de Cadastro para adicionar o 0 (zero) em índices menores que 10, resolva seu problema.
A forma como a classificação desta coluna no ListView está sendo feita no momento, está correta, pois ela classifica na ordem numérica mesmo. Como o número 19 começa em 1, sempre virá á frente do 2 e assim por diante.
Agora, se você acrescentar o 0 (zero) nos registros menores que 10, verá que os dados serão carregados da forma que deseja.
Para exibir sempre o último registro como sendo o primeiro da lista, após adicionar os dados ao ListView, faça:
Código: Selecionar todos
With nomeSeuFormulario.ListView
.Sorted = False
'Informe qual coluna devemos ordenar
.SortKey = 0 'Primeira coluna
'Ou se preferir, use o indice do ComboBox Campo
'.SortKey = nomeComboxCampo.ListIndex
'Informe qual a forma de classificação
.SortOrder = lvwAscending
'Ou se preferir, use o indice do ComboBox Ordem
'.SortOrder = nomeCombox.ListIndex
'Classificamos os dados
.Sorted = True
End With
Abs
- Anexos
-
- ordenar_ListView.zip
- (33.91 KiB) Baixado 242 vezes