Notifications
Clear all

Como posso estar adicionando uma linha nesse codigo?

11 Posts
2 Usuários
0 Reactions
1,863 Visualizações
(@wenpra)
Posts: 76
Estimable Member
Topic starter
 

Gostaria de saber como posso estar adicionando uma nova linha na minha planilha para cada linha da listbox preenchida?
Tentei usar desta forma que esta destaca em vermelho mas não funcionou.

Sub adicionaProdutoContrato()
'cria varíavel para contagem da linha a ser preenchida
Dim Nlin
'cria uma variável para contar as linhas da listbox
Dim Cont

'limpa a região com dados anteriores
Nlin = 17
'linha inicial da planilha que carregará os dados
'preenche as outras linhas até o fim da listbox
For Cont = 0 To frmContrato.ListBoxLoc.ListCount - 1
Plan11.Range("A" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 0)
Plan11.Range("B" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 1)
Plan11.Range("E" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 4)
Rows("17:17").Select
Selection.Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove

Nlin = Nlin + 1
Next
End Sub

 
Postado : 18/06/2013 1:34 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Eu nãoentendi muito bem, você quer inserir uma linha em branco em Linha 17 ???

Sub Eu_Nao_Entendi()
    ActiveSheet.Rows(17).Insert shift:=xlDown
End Sub

Att

 
Postado : 18/06/2013 5:04 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se entendi corretamente, você quer adicionar uma linha em Branco sempre acima de cada lançamento naplanilha, se for isto tente a rotina abaixo:

Sub adicionaProdutoContrato()
    'cria varíavel para contagem da linha a ser preenchida
    Dim Nlin
    'cria uma variável para contar as linhas da listbox
    Dim Cont
    
    'limpa a região com dados anteriores
    Nlin = 17
    'linha inicial da planilha que carregará os dados
    'preenche as outras linhas até o fim da listbox
    For Cont = 0 To frmContrato.ListBoxLoc.ListCount - 1
        Plan11.Range("A" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 0)
        Plan11.Range("B" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 1)
        Plan11.Range("E" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 4)
        
        'Adiciona uma linha em Branco acima do Ultimo lançamento
        Rows(Nlin - 1).Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove
        
        Nlin = Nlin - 1
        
    Next
    
End Sub

Se não for, detalhe melhor.

[]s

 
Postado : 18/06/2013 5:33 pm
(@wenpra)
Posts: 76
Estimable Member
Topic starter
 

Se entendi corretamente, você quer adicionar uma linha em Branco sempre acima de cada lançamento naplanilha, se for isto tente a rotina abaixo:

Sub adicionaProdutoContrato()
    'cria varíavel para contagem da linha a ser preenchida
    Dim Nlin
    'cria uma variável para contar as linhas da listbox
    Dim Cont
    
    'limpa a região com dados anteriores
    Nlin = 17
    'linha inicial da planilha que carregará os dados
    'preenche as outras linhas até o fim da listbox
    For Cont = 0 To frmContrato.ListBoxLoc.ListCount - 1
        Plan11.Range("A" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 0)
        Plan11.Range("B" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 1)
        Plan11.Range("E" & Nlin) = frmContrato.ListBoxLoc.List(Cont, 4)
        
        'Adiciona uma linha em Branco acima do Ultimo lançamento
        Rows(Nlin - 1).Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove
        
        Nlin = Nlin - 1
        
    Next
    
End Sub

Se não for, detalhe melhor.

[]s

Então não consegui eu gostaria que cada linha da listbox preenchida na minha planilha antes de preencher a segunda ele copia e insere a próxima linha e insere a segunda linha da minha listbox pois as linhas tem que ser copiadas porque elas tem uma formula nelas.

 
Postado : 19/06/2013 6:17 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se entendi corretamente, você quer adicionar uma linha em Branco sempre acima de cada lançamento na planilha, se for isto tente a rotina abaixo:
Se não for, detalhe melhor.

Então não consegui eu gostaria que cada linha da listbox preenchida na minha planilha antes de preencher a segunda ele copia e insere a próxima linha e insere a segunda linha da minha listbox pois as linhas tem que ser copiadas porque elas tem uma formula nelas.

E eu que pensei que havia entendido, agora você deu um nó na minha cabeça, melhor anexar um modelo com os resultados que pretende, para quem sabe podermos entender melhor.

[]s

 
Postado : 19/06/2013 6:56 pm
(@wenpra)
Posts: 76
Estimable Member
Topic starter
 

é assim eu tenho uma listbox certo nela tenho 3 linhas na minha listbox.

eu estou enviando esses dados para minha planilha, ai ela pega a linha 1 da minha listbox e copia para a linha 17 da minha planilha, antes dela exportar os dados da linha2 da listbox eu queria que fosse inserido uma linha na planilha acima da linha 17 e os dados da 2 linha da listbox fosse inserido.

 
Postado : 19/06/2013 7:25 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vamos ver se entendi :

Em sua planilha na Linha 16 voce tem alguns dados, então você quer inserir a partir da linha 17 os dados constantes no Listbox da seguinte forma :

A primeira linha do Listbox vai para a linha 17,
A Segunda, antes de ser transferida para a planilha inserimos uma nova linha acima da linha inserida anteriormente, ou seja jogamos a linha 17 para baixo, linha 18 e a segunda linha do listbox vai para a 17 e assim em sequencia, sempre acima do ultimo lançamento sem pular linha ou estas ficarem acima da linha 16.

Se for isto, é só alterar as linhas da rotina que passei :
Esta :
Rows(Nlin - 1).Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove
Prar esta :
'Adiciona uma linha em Branco acima do Ultimo lançamento
Rows(Nlin).Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove 'Veja que eliminei o menos 1

e apagar o incremento de nNlin. (Nlin = Nlin - 1)

Ajuste a rotina e veja se é isto.

[]

 
Postado : 19/06/2013 7:59 pm
(@wenpra)
Posts: 76
Estimable Member
Topic starter
 

Vamos ver se entendi :

Em sua planilha na Linha 16 voce tem alguns dados, então você quer inserir a partir da linha 17 os dados constantes no Listbox da seguinte forma :

A primeira linha do Listbox vai para a linha 17,
A Segunda, antes de ser transferida para a planilha inserimos uma nova linha acima da linha inserida anteriormente, ou seja jogamos a linha 17 para baixo, linha 18 e a segunda linha do listbox vai para a 17 e assim em sequencia, sempre acima do ultimo lançamento sem pular linha ou estas ficarem acima da linha 16.

Se for isto, é só alterar as linhas da rotina que passei :
Esta :
Rows(Nlin - 1).Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove
Prar esta :
'Adiciona uma linha em Branco acima do Ultimo lançamento
Rows(Nlin).Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove 'Veja que eliminei o menos 1

e apagar o incremento de nNlin. (Nlin = Nlin - 1)

Ajuste a rotina e veja se é isto.

[]

Então fiz o que vc me falou mas ele não adiciona a linha ele esta subscrevendo um em cima do outro.

 
Postado : 19/06/2013 8:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Melhor anexar um exemplo simplificado e compactado, assim eliminamos as suposições.

[]s

 
Postado : 19/06/2013 8:17 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Posso dar minha humilde colaboração?

Pelo que eu entendi, seu objetivo é colocar todos os dados do listbox na planilha, mas em ordem inversa? Ou seja, a inserçao sempre ocorre na linha 17, empurrando o resto para baixo?

Pergunto isso pq confesso estou bem curioso para saber daonde vem os dados que alimentam este listbox...

Valeu,

 
Postado : 21/06/2013 6:14 am
(@wenpra)
Posts: 76
Estimable Member
Topic starter
 

Melhor anexar um exemplo simplificado e compactado, assim eliminamos as suposições.

[]s

DEU CERTO o erro e que antes de exportar os dados para planilha tinha uma função para clear o listbox.. Valeu pela ajuda

 
Postado : 21/06/2013 7:50 am