Transferir textbox para listbox

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Transferir textbox para listbox

Mensagempor robertonl » Qui Set 19, 2019 9:14 pm

Boa noite.
Preciso que esse código abaixo eu consigo inserir os valores de textbox/label em uma listbox, porém a listbox aceita no máximo 10 colunas.Preciso que a listbox aceite mais que 10 colunas.

Código: Selecionar todos
Private Sub Adc_ProdCorpoNFiscal_Click()
Dim RETORNO As Double
Corpo_NFiscal.ColumnWidths = "65;80;60;65;80;60;60;60;60;60;60"
'Dim TextoCelula As String
  'Set ws = ThisWorkbook.Worksheets("fornecedor")
 
  'Me.Lst_Fornecedor.Clear
  'Me.Lst_Fornecedor.ColumnCount = 5
  'Me.Lst_Fornecedor.ColumnWidths = "50;150;130;200;80;70;70;70;70;70;70"
Corpo_NFiscal.ColumnCount = 11
Corpo_NFiscal.AddItem
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 0) = Cod_Id.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 1) = Data_NotaFiscal.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 2) = Num_NotaFiscal.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 3) = Qtde_Itens.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 4) = Frete_Compra.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 5) = Lbl_Taxas.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 6) = Valor_FreteTaxa.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 7) = Class_Produto.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 8) = Id_CodFornec.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 9) = Id_NomeFornec.Caption
'Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 10) = Id_CodProduto.Caption

'Lst_FornecProd.List(Lst_FornecProd.ListCount - 1, 9) = Total
'Lst_CorpoNFiscal.List(Lst_CorpoNFiscal.ListCount - 1, 10) = Prc_Custo.Caption

'MsgBox ("Item incluido com sucesso!")
'Call Calculo_Colunas
RETORNO = MsgBox("Produto incluso com sucesso. Deseja incluir mais para o fornecedor?", vbYesNo, "Retorno")
'MsgBox retorno

If RETORNO = 6 Then
    Me.Pesq_Produto.Value = Empty
    Me.Pesq_Produto.SetFocus
    'Me.Cod_Prod = Empty
    'Me.Desc_Prod.Caption = Empty
    'Me.Btn_AdcListagem.Enabled = True
    'Dados_Produto.Show
    'Me.Btn_AdcListagem.Enabled = True
    'Me.Desc_Prod = Empty
    'dados_produto.cla
    'Me.Classif_Produto.Caption = Empty
    'Me.Perc_Calc.Caption = Empty
    'Me.Btn_AdcListagem.Enabled = True
    'Me.Btn_AdcListagem.SetFocus
    'Me.InfoProduto.Caption = Empty
    'Me.Calculo.Caption = Empty
    'Me.Qtde_Embal.Caption = Empty
    'Me.Valor.Value = Empty
    'Me.FreteUnitario.Caption = Empty
    'Me.TotalProduto.Caption = Empty
    'Me.DataRecebNFiscal.SetFocus
    'Me.Btn_BuscaProduto.SetFocus
   
    Else
'Call Somar
Call Salvar_NotaFiscal
'Me.Salva_Info.Enabled = True
Exit Sub 'ADICIONADO
End If
End Sub

robertonl
Membro
Membro
 
Mensagens: 149
Registrado em: Sáb Fev 28, 2015 2:39 pm
Has thanked: 41 times
Have thanks: 0 time

{ SO_SELECT }

Re: Transferir textbox para listbox

Mensagempor Coutinho » Sex Set 20, 2019 10:39 am

robertonl, infelizmente essa é uma das limitações do Listbox quando se quer ter mais de 10 colunas, e da maneira que está fazendo ele não aceita, porém, temos algumas formas de burlar isso :

Primeiro: trocar o ListBox por ListView, esse tem muito mais propriedades que o Listbox;

Segundo : Usar a Propriedade RowSource, mas teria de jogar os dados para a planilha e carrega-los da seguinte forma:
Código: Selecionar todos
ListBox1.RowSource = "Planilha1!A1:A15"


Terceiro : Criar um Array, esse já demanda um pouco mais de conhecimentos e trabalho, de uma olhada no link abaixo:
Listboxes on userforms with Excel VBA macros
https://sitestory.dk/excel_vba/listboxes.htm

Use a Pesquisa no Forun tambem, esse assunto já foi discutido em vários tópicos.

[]s
Mauro Coutinho
Mauro Coutinho
com novo usuário devido a manutenção do grupo
Coutinho
Ninja do Excel
Ninja do Excel
 
Mensagens: 118
Registrado em: Qua Jun 12, 2019 6:18 pm
Has thanked: 5 times
Have thanks: 60 times

Re: Transferir textbox para listbox

Mensagempor rlm » Sex Set 20, 2019 10:51 am

Eu não testei, mas no forum msdn https://social.msdn.microsoft.com/Forums/pt-BR/75e2dea4-727d-4f9c-896d-99b51ec4fad6/listbox-com-mais-de-10-colunas?forum=vbapt há uma indicação de utilizar a segunda indicação do colega Mauro, porem sem a necessidade de incluir os dados na planilha;apesar que a utulização do método Array é bem efetiva; pelo exposta lá sua rotina ficará algo +/- assim:
Código: Selecionar todos
....
'Corpo_NFiscal.ColumnCount = 11
Corpo_NFiscal.List = Range("AA1:AK1000").Value
Corpo_NFiscal.Clear         'Caso a range determinada consta algum valor/dado/conteudo
'Inicia o preenchiment normal da listbox
Corpo_NFiscal.AddItem
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 0) = Cod_Id.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 1) = Data_NotaFiscal.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 2) = Num_NotaFiscal.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 3) = Qtde_Itens.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 4) = Frete_Compra.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 5) = Lbl_Taxas.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 6) = Valor_FreteTaxa.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 7) = Class_Produto.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 8) = Id_CodFornec.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 9) = Id_NomeFornec.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 10) = Id_CodProduto.Caption
...
Reinaldo
Garça - SP / SCS - SP

For this post the author rlm thanked:
robertonl (Sex Set 20, 2019 7:52 pm)
Avatar do usuário
rlm
Ninja do Excel
Ninja do Excel
 
Mensagens: 410
Registrado em: Qui Out 16, 2014 12:30 pm
Has thanked: 30 times
Have thanks: 183 times

Re: Transferir textbox para listbox

Mensagempor robertonl » Sex Set 20, 2019 1:04 pm

Ok.
Desejaria que quando jogasse na listbox, nao pegaria a linha com titulo da planilha
robertonl
Membro
Membro
 
Mensagens: 149
Registrado em: Sáb Fev 28, 2015 2:39 pm
Has thanked: 41 times
Have thanks: 0 time

Re: Transferir textbox para listbox

Mensagempor rlm » Sáb Set 21, 2019 2:33 pm

Qual procedimento está a utilizar?
Reinaldo
Garça - SP / SCS - SP
Avatar do usuário
rlm
Ninja do Excel
Ninja do Excel
 
Mensagens: 410
Registrado em: Qui Out 16, 2014 12:30 pm
Has thanked: 30 times
Have thanks: 183 times

Re: Transferir textbox para listbox

Mensagempor robertonl » Sáb Set 21, 2019 7:14 pm

Estou utilizando este procedimento.
A ideia é que se tiver mais de 1 item na minha nota ela apareça na listbox, só está aparecendo o ultimo item lançado.

Código: Selecionar todos
Private Sub Adc_ProdCorpoNFiscal_Click()
Dim RETORNO As Double
Corpo_NFiscal.ColumnWidths = "65;80;60;65;80;60;60;60;60;60;60"
'Dim TextoCelula As String
  'Set ws = ThisWorkbook.Worksheets("fornecedor")
 
  'Me.Lst_Fornecedor.Clear
  'Me.Lst_Fornecedor.ColumnCount = 5
  Corpo_NFiscal.ColumnWidths = "65;80;60;65;80;60;60;60;60;60;60"
Corpo_NFiscal.ColumnCount = 11
Sheets("dados entrada").Select
Corpo_NFiscal.List = Range("AA1:AK1000").Value
Corpo_NFiscal.Clear         'Caso a range determinada consta algum valor/dado/conteudo
'Inicia o preenchiment normal da listbox
Corpo_NFiscal.AddItem
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 0) = Cod_Id.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 1) = Data_NotaFiscal.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 2) = Num_NotaFiscal.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 3) = Qtde_Itens.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 4) = Frete_Compra.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 5) = Lbl_Taxas.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 6) = Valor_FreteTaxa.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 7) = Class_Produto.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 8) = Id_CodFornec.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 9) = Id_NomeFornec.Caption
'Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 10) = Id_CodProduto.Caption

'Lst_FornecProd.List(Lst_FornecProd.ListCount - 1, 9) = Total
'Lst_CorpoNFiscal.List(Lst_CorpoNFiscal.ListCount - 1, 10) = Prc_Custo.Caption

'MsgBox ("Item incluido com sucesso!")
'Call Calculo_Colunas
RETORNO = MsgBox("Produto incluso com sucesso. Deseja incluir mais para o fornecedor?", vbYesNo, "Retorno")
'MsgBox retorno

If RETORNO = 6 Then
    Me.Pesq_Produto.Value = Empty
    Me.Pesq_Produto.SetFocus
    Me.Cod_Id = Empty
    'Me.Desc_Prod.Caption = Empty
    'Me.Btn_AdcListagem.Enabled = True
    'Dados_Produto.Show
    'Me.Btn_AdcListagem.Enabled = True
    'Me.Desc_Prod = Empty
    'dados_produto.cla
    'Me.Classif_Produto.Caption = Empty
    'Me.Perc_Calc.Caption = Empty
    'Me.Btn_AdcListagem.Enabled = True
    'Me.Btn_AdcListagem.SetFocus
    'Me.InfoProduto.Caption = Empty
    'Me.Calculo.Caption = Empty
    'Me.Qtde_Embal.Caption = Empty
    'Me.Valor.Value = Empty
    'Me.FreteUnitario.Caption = Empty
    'Me.TotalProduto.Caption = Empty
    'Me.DataRecebNFiscal.SetFocus
    'Me.Btn_BuscaProduto.SetFocus
   
    Else
'Call Somar
Call Salvar_NotaFiscal
'Me.Salva_Info.Enabled = True
Exit Sub 'ADICIONADO
End If
End Sub


robertonl
Membro
Membro
 
Mensagens: 149
Registrado em: Sáb Fev 28, 2015 2:39 pm
Has thanked: 41 times
Have thanks: 0 time

Re: Transferir textbox para listbox

Mensagempor rlm » Dom Set 22, 2019 10:33 am

"...Desejaria que quando jogasse na listbox, nao pegaria a linha com titulo da planilha..."
Não entendi, qual cabecalho está aparecendo, algo que conste em AA1:AK1?

"...A ideia é que se tiver mais de 1 item na minha nota ela apareça na listbox..."
Aparentemente e "carregado" no listbox o item/produto que consta em Text/Label de um formulário, não é isso ?
Reinaldo
Garça - SP / SCS - SP
Avatar do usuário
rlm
Ninja do Excel
Ninja do Excel
 
Mensagens: 410
Registrado em: Qui Out 16, 2014 12:30 pm
Has thanked: 30 times
Have thanks: 183 times

Re: Transferir textbox para listbox

Mensagempor robertonl » Dom Set 22, 2019 11:47 am

Sim. A ideia é incluir os itens de textbox e label diretamente na listbox ( Se a nota fiscal tiver mais de um item, desejo que apareça na listbox) e depois salvar a listbox na guia especificada no programa
robertonl
Membro
Membro
 
Mensagens: 149
Registrado em: Sáb Fev 28, 2015 2:39 pm
Has thanked: 41 times
Have thanks: 0 time

Re: Transferir textbox para listbox

Mensagempor robertonl » Dom Set 22, 2019 12:51 pm

Neste formato funciona como deseja, inclui label e textbox sem necessidade de passar pela guia do excel, porém fica limitado a 10 colunas o máximo

Código: Selecionar todos
Private Sub Adc_ProdCorpoNFiscal_Click()
Dim RETORNO As Double
'Corpo_NFiscal.ColumnWidths = "65;80;60;65;80;60;60;60;60;60;60"
'Dim TextoCelula As String
  'Set ws = ThisWorkbook.Worksheets("fornecedor")
 
  'Me.Lst_Fornecedor.Clear
  'Me.Lst_Fornecedor.ColumnCount = 5
Me.Corpo_NFiscal.ColumnWidths = "65;80;60;65;80;60;60;60;60;60;60;60"
Me.Corpo_NFiscal.ColumnCount = 12
'Sheets("dados entrada").Select
'Me.Corpo_NFiscal.List = Range("A:l").Value
'Corpo_NFiscal.Clear         'Caso a range determinada consta algum valor/dado/conteudo
'Inicia o preenchiment normal da listbox
Me.Corpo_NFiscal.AddItem
'Me.Corpo_NFiscal.List = Cod_Id.Value
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 0) = Cod_Id.Value
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 1) = Data_NotaFiscal.Value
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 2) = Num_NotaFiscal.Value
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 3) = Qtde_Itens.Value
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 4) = Frete_Compra.Value
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 5) = Lbl_Taxas.Caption
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 6) = Valor_FreteTaxa.Caption
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 7) = Class_Produto.Caption
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 8) = Id_CodFornec.Caption
Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 9) = Id_NomeFornec.Caption
'Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 10) = Id_CodProduto.Caption
'Me.Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 11) = Id_NomeProduto.Caption

'Lst_FornecProd.List(Lst_FornecProd.ListCount - 1, 9) = Total
'Lst_CorpoNFiscal.List(Lst_CorpoNFiscal.ListCount - 1, 10) = Prc_Custo.Caption

'MsgBox ("Item incluido com sucesso!")
'Call Calculo_Colunas
RETORNO = MsgBox("Produto incluso com sucesso. Deseja incluir mais para o fornecedor?", vbYesNo, "Retorno")
'MsgBox retorno

If RETORNO = 6 Then
    Me.Pesq_Produto.Value = Empty
    'Me.Pesq_Produto.SetFocus
    Me.Cod_Id.SetFocus
    'Me.Desc_Prod.Caption = Empty
    'Me.Btn_AdcListagem.Enabled = True
    'Dados_Produto.Show
    'Me.Btn_AdcListagem.Enabled = True
    'Me.Desc_Prod = Empty
    'dados_produto.cla
    'Me.Classif_Produto.Caption = Empty
    'Me.Perc_Calc.Caption = Empty
    Me.Adc_ProdCorpoNFiscal.Enabled = True
    'Me.Adc_ProdCorpoNFiscal.SetFocus
    'Me.InfoProduto.Caption = Empty
    'Me.Calculo.Caption = Empty
    'Me.Qtde_Embal.Caption = Empty
    'Me.Valor.Value = Empty
    'Me.FreteUnitario.Caption = Empty
    'Me.TotalProduto.Caption = Empty
    'Me.DataRecebNFiscal.SetFocus
    'Me.Btn_BuscaProduto.SetFocus
   
    Else
'Call Somar
Call Salvar_NotaFiscal
'Me.Salva_Info.Enabled = True
Exit Sub 'ADICIONADO
End If
End Sub


robertonl
Membro
Membro
 
Mensagens: 149
Registrado em: Sáb Fev 28, 2015 2:39 pm
Has thanked: 41 times
Have thanks: 0 time

Re: Transferir textbox para listbox

Mensagempor rlm » Dom Set 22, 2019 4:44 pm

Bem continuamos do chutômetro:
Básicamente a diferença entre as duas rotinas, alem a indicação da range (Corpo_NFiscal.List = Range("AA1:AK1000").Value) que não afeta o funcionamento da rotina, somente a propriedade da listbox;
e a indicação de setFocus para Co_Id vs "Limpeza" de Cod_Id ( Me.Cod_Id.SetFocus vs Me.Cod_Id = Empty) e a possibilidadede acesso ao controle Adc_ProdCorpoNFiscal (Me.Adc_ProdCorpoNFiscal.Enabled = True)

"Igualando e eliminando as linhas comentadas teremos:
Código: Selecionar todos
Private Sub Adc_ProdCorpoNFiscal_Click()
Dim RETORNO As Double

Corpo_NFiscal.ColumnWidths = "65;80;60;65;80;60;60;60;60;60;60"
Sheets("dados entrada").Select
Corpo_NFiscal.List = Range("AA1:AK1000").Value
Corpo_NFiscal.Clear         'Caso a range determinada consta algum valor/dado/conteudo

'Inicia o preenchiment normal da listbox
Corpo_NFiscal.AddItem
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 0) = Cod_Id.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 1) = Data_NotaFiscal.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 2) = Num_NotaFiscal.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 3) = Qtde_Itens.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 4) = Frete_Compra.Value
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 5) = Lbl_Taxas.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 6) = Valor_FreteTaxa.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 7) = Class_Produto.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 8) = Id_CodFornec.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 9) = Id_NomeFornec.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 10) = Id_CodProduto.Caption
Corpo_NFiscal.List(Corpo_NFiscal.ListCount - 1, 11) = Id_NomeProduto.Caption

RETORNO = MsgBox("Produto incluso com sucesso. Deseja incluir mais para o fornecedor?", vbYesNo, "Retorno")

    If RETORNO = 6 Then
        Pesq_Produto.Value = Empty
        Cod_Id.SetFocus
        Btn_AdcListagem.Enabled = True
     Else
        Call Salvar_NotaFiscal
        Exit Sub 'ADICIONADO
    End If
End Sub


Se não funcionar poste seu modelo em algum site de compartilhamento tipo SenSpace/DropoBox/Mega...
e informe aqui o link, e explique demonstre (manulamente) o que espera ter
Reinaldo
Garça - SP / SCS - SP
Avatar do usuário
rlm
Ninja do Excel
Ninja do Excel
 
Mensagens: 410
Registrado em: Qui Out 16, 2014 12:30 pm
Has thanked: 30 times
Have thanks: 183 times

Próximo

Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes

cron