Criar ListBox

Tem como criar uma listbox que puxa os parametros da planilha ai quando eu adicionar mais um registro ai eu clicar no botao ele inserir,sem ter que mexer no codigo fonte.

Sem título 2.ods

LINK ABAIXO É DE UMA PLANILHA QUE UTILIZO PARA IMPRIMIR IDENTIFICAÇÃO ,ESTA UMA BAGUNÇA MAS DA PRA APRIMORAR NELA UTILIZO VBA E BASIC

IDENTIFICAÇÃO CARGA 2018.ods

@joaorochaj, não entendi exatamente o que você quer. Pretende jogar as 3 colunas (nome, idade e cidade) no listbox? Onde quer adicionar o novo registro? No listbox ou na planilha?

@Grafeno eu pretendo jogar as 3 colunas no listbox,eu quero adicionar na planilha.
Por exemplo,se a a COLUNA A,B,C tem DADOS ate a linha 11 ,ai na list box mostra ate a linha 11 das coluna A,B,C

Na verdade, o listbox não suporta colunas. No máximo é possível emular colunas com uma fonte monoespaçada e uma função que coloque espaços entre os dados. Vou trabalhar um exemplo e postar…

Boa noite,

Segue um exemplo de como fica carregar os dados na listbox emulando colunas:

Descrição da imagem

.

ListBoxColunas.ods

.

Dim oDialogo As Object

Sub abrir

   DialogLibraries.LoadLibrary("Standard")
   'Usando a variável declarada no começo do módulo'
   oDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName("Dialog1") )
   'Carregar'
   oDialogo.Execute()
   oDialogo.Dispose()

End Sub

Sub CarregarDados
   oDoc = ThisComponent
   oPlan = oDoc.Sheets.getByName("Planilha1")
   
   oListBox = oDialogo.getControl("ListBox1")
   oListBox.Model.removeAllItems
   
   For i = 1 to UltimaLinha(oPlan)
     sCol1 = oPlan.getCellByPosition(0,i).String
     sCol2 = oPlan.getCellByPosition(1,i).String
     sCol3 = oPlan.getCellByPosition(2,i).String
     
     oListBox.AddItem( EspacarColuna(sCol1,30) &_
                       EspacarColuna(sCol2,10) &_
                       EspacarColuna(sCol3,20), i )
   Next i   
End Sub

Function EspacarColuna( sCol, nTam )
   EspacarColuna = Left(sCol & String(nTam," "),nTam) & " "
End Function

Function UltimaLinha( oPlan )
   oCursor = oPlan.createCursor
   oCursor.gotoEndOfUsedArea(True)
   UltimaLinha = oCursor.Rows.Count-1
End Function

Atte,

Obrigado ,é isso mesmo que eu preciso, muito obrigado mesmo,eu ainda sou novo nessa linguagem do libreoffice,entao meu conhecimento é pouco e basico.
Só mais uma duvida,tem alguma macro que seleciona a ultima linha da listbox?
ou seja assim que eu clicar ele seleciona a ultima linha da listbox direto nela.

@Grafeno …Vou utilizar esse procedimento para minha planilha de controle de RNC para trazer as ações propostas no formulário. Caiu como uma luva.

eu utilzei e funcionou agora só tenho que tentar pra colocar as colunas em ordem por igual.



DEU CERTO !

@joaorochaj, para as colunas ficarem alinhadas é preciso mudar a fonte do listbox para uma fonte monoespaçada, como Liberation Mono, Courier New, etc.

@joaorochaj , ficou show

@Conras, obrigado , eu estou cada dia mudando algo,futuramente coloco ele melhorado.