bonoddr Postado Março 3, 2004 Denunciar Share Postado Março 3, 2004 E aí pessoal, preciso de uma ajuda. Preciso saber como faço pra copiar uma linha INTEIRA para alguma outra que eu especifique em VBA Excel. Aguardo respostas, valeu!bonoddr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 3, 2004 Autor Denunciar Share Postado Março 3, 2004 Não sei se a linha para "cortar" uma linha inteira e "colar" é este, mas foi o que eu achei:para celulaV=Cells(7,3) e celulaP=Cells(6,3)Range(celulaV).EntireRow.Cut (Range(celulaP).EntireRow.PasteSpecial)Toda ajuda é bem-vinda, estou pesquisando também. Valeu!bonoddr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William Rodrigues Postado Março 3, 2004 Denunciar Share Postado Março 3, 2004 Toda ajuda é bem-vinda, estou pesquisando também. Valeu!É isso æ...Também estou tentando aqui !!!Abraços,William Rodrigues Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 3, 2004 Autor Denunciar Share Postado Março 3, 2004 estou conseguindo! só falta eu saber como removo as linhas, e não simpesmente os conteúdos correspondentes a: Range("A1:Z6801")agradeço qualquer ajuda!bonoddr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 4, 2004 Autor Denunciar Share Postado Março 4, 2004 Pessoal progredi muito, estou pesquisando direto, mas preciso de uma única informação... Quero saber como faço pra percorrer as linhas do excel e como saber que cheguei ao final delas. Gostaria de saber quais as propriedades e métodos que devo utilizar, e como uso o EOF nessa história toda. Valeu!bonoddr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William Rodrigues Postado Março 4, 2004 Denunciar Share Postado Março 4, 2004 Brother....Te passei via PM, mas acho que ainda não viu...Tudo bem Para linhas: Application.ThisWorkbook.WorkSheet(nome ou index da planilha).UserRange.Rows.Count Para colunas: Application.ThisWorkbook.WorkSheet(nome ou index da planilha).UserRange.Columns.Count Acho que esse método resulta em um IntegerAbraços,William Rodrigues Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 4, 2004 Autor Denunciar Share Postado Março 4, 2004 vi sim cara, mas eu te mandei mais um outro, quando puder me responder, eu agradeço. Daí posto a solução para interessados poderem aprender também Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William Rodrigues Postado Março 4, 2004 Denunciar Share Postado Março 4, 2004 Beleza...Eu vi lá...estou tentando aqui brother...Mas tá dando um erro no barato aqui que nem conseguindo entrar no 'Excel' eu estou conseguindo !!!Mas, vou trentar arrumar esse pequeno 'probleminha'Abraços,William Rodrigues Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 4, 2004 Autor Denunciar Share Postado Março 4, 2004 Valeu por toda essa atenção cara... valeu mesmono aguardo,bonoddr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William Rodrigues Postado Março 4, 2004 Denunciar Share Postado Março 4, 2004 Firmão...Mas pode deixar que irei te ajudar sim...Abraços,William Rodrigues Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 5, 2004 Autor Denunciar Share Postado Março 5, 2004 estou revivendo o tópico Tomara que o Graymalkin veja... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 6, 2004 Denunciar Share Postado Março 6, 2004 Haverão células em branco no meio das informações?Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 6, 2004 Autor Denunciar Share Postado Março 6, 2004 Independente disso cara, comparando com métodos de acesso a bancos de dados em VB, você chega ao final dos registros de uma tabela, por exemplo, com algo assim: RecordSet.EOFPercorre os registros com algo assim: RecordSet.CountQuero simplesmente saber como fazer as mesmas coisas, só que em VBA excel. Qualquer coisa, eu te mandei uma PM explicando mais detalhadamente. Valeu e esperando respostas,bonoddrOBS.: você me deu uma idéia, para quando uma linha inteira for vazia, encerre a contagem, mas ainda preciso de um método que conte o número de linhas. E ainda um outro que reconheça uma linha inteira como vazia. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 6, 2004 Denunciar Share Postado Março 6, 2004 O problema é justamente que uma planilha do Excel não é como uma tabela, ou seja, não existe um EOF. Em uma tabela, mesmo que um registro esteja vazio em todos os campos, o espaço dele é ocupado. Já em uma planilha do Excel isso não é necessariamente verdade, ainda mais se considerarmos que não existem campos e registros numa planilha. Essa idéia é apenas uma abstração nossa.De qualquer forma, se quiser saber quantas linhas e colunas existem, basta ver o conteúdo das propriedades Rows.Count e Columns.Count.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 6, 2004 Denunciar Share Postado Março 6, 2004 Complementando a resposta acima, assim você pode saber se uma linha inteira está vazia (nesse exemplo é verificada a primeira linha): Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select valores = Selection.Value retorno = True For Each elemento In valores If elemento <> vbNullString Then retorno = False Exit For End If Next elemento MsgBox retornoSe retorno for True é porque ela está vazia, caso contrário (False) tem alguma coluna com texto.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 7, 2004 Autor Denunciar Share Postado Março 7, 2004 Cara muito obrigado! Este seu código me ajudou muito.. Mas tem um porém, no exemplo abaixo, quando coloco pra exibir o conteúdo de Rows.Count, ele retorna o número = 65536. porque isso???E, ao invés de usar o número fixo (conta < 4), gostaria de usar algo assim: (conta < Rows.Count), sacou? Sub teste() Dim conta As Integer conta = 1 While (conta < 4) Range("A" & conta).Select Range(Selection, Selection.End(xlToRight)).Select valores = Selection.Value retorno = True For Each elemento In valores If elemento <> vbNullString Then retorno = False 'valores = Selection.Delete Exit For End If Next elemento MsgBox retorno MsgBox Rows.Count conta = conta + 1 Wend End SubAh, mais uma coisa: no código tá comentado, eu gostaria de remover uma linha inteira quando ela for nula. É dessa maneira que procedo?Agradeço pela ajuda! Tudo o que ajudou até agora foi bastante! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 7, 2004 Denunciar Share Postado Março 7, 2004 Ele retorna 65536 porque, de fato, existem 65536 (ou seja, 2^16) linhas na planilha (vá até o final dela que você verá). E para remover a linha inteira você pode usar:Selection.EntireRow.DeleteAbraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 7, 2004 Autor Denunciar Share Postado Março 7, 2004 hummm valeu mesmo.. Então como faço para Rows.Count retornar o número de linhas que realmente estão preenchidas na planilha?por exemplo, tenho uma planilha de 8000 linhas, então quero que Rows.Count retorne o valor 8000 ao invés do número total de linhas de uma planilha (inclusive linhas nulas), sacou?Resumindo: quero poder usar no meu código que exibi:while (conta < Rows.Count)ao invés de:while (conta < 8000)Dessa maneira, eu posso usar o macro em qualquer planilha, e não em uma específica que contém 8000 linhas.Valeu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 7, 2004 Denunciar Share Postado Março 7, 2004 A resposta é que não pode. Rows.Count sempre retornará a quantidade total de linhas de uma planilha, ou seja, se na próxima versão do Excel a quantidade de linhas dobrar, Rows.Count retornará 131072, por exemplo.No entanto, pode-se fazer quase a mesma coisa que foi feita para descobrir se uma linha está vazia ou não. Ou seja, percorrer todos os elementos de uma coluna e verificar qual a última célula preenchida. É claro que isso só funcionará se todas as outras colunas seguirem o mesmo padrão. O exemplo abaixo mostrará qual a última linha preenchida da coluna "A": Dim última As Long última = 0 Columns("A:A").Select valor = Selection.Value For i = LBound(valor) To UBound(valor) elemento = valor(i, 1) If elemento <> vbNullString Then última = i End If Next i MsgBox "Última linha usada da primeira coluna:" & últimaAbraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 8, 2004 Autor Denunciar Share Postado Março 8, 2004 Cara valeu MESMO, não sabe o quanto me ajudou Mas eu não consegui aproveitar o código para deletar as linhas nulas, ele acaba deletando o que não deve heheheeebonoddr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 8, 2004 Autor Denunciar Share Postado Março 8, 2004 Aproveitando a oportunidade, queria saber como coloco essas macros em qualquer planilha que eu abrir do excel. Ao invés de ter sempre que criar os módulos e copiar/colar os códigos. Valeu!bonoddrAh lenbrei também, queria fazer como faço em C++, onde cada função retorna um valor específico. Como faço isso em VB, com os Functions ou com os Sub´s? Se puder dar um exemplo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 8, 2004 Denunciar Share Postado Março 8, 2004 Quanto a isso de colocar em todas as planilhas do Excel eu não sei se é possível. No Word existe o Normal.dot que é um "modelo" e tudo que você coloca nele fica disponível, mas não achei algo assim no Excel.Naquele caso de apagar as linhas, nem reparei que a instrução está no lugar errado do jeito que você colocou. O correto seria:Sub teste() Dim conta As Integer conta = 1 While (conta < 4) Range("A" & conta).Select Range(Selection, Selection.End(xlToRight)).Select valores = Selection.Value retorno = True For Each elemento In valores If elemento <> vbNullString Then retorno = False Exit For End If Next elemento if retorno then Selection.EntireRow.Delete endif MsgBox retorno MsgBox Rows.Count conta = conta + 1 Wend End Sub No VB, functions são funções e subs são rotinas, sendo que a primeira pode retornar um valor e a segunda não. Exemplo de uma função: function Soma(byval n1 as integer, byval n2 as integer) as integer Soma = n1+n2 end function Nesse exemplo acima a função "Soma" terá dois argumentos passados por valor (n1 e n2), ambos inteiros, e retornará também um inteiro. No C++ usa-se a instrução return para retornar o valor, já no VB usa-se o nome da função como se fosse uma variável, atribuindo o valor de retorno à ela. Exemplo de uma rotina: sub Alô(byval nome as string) msgbox "Alô, " & nome end sub Repare que na sub não existe o tipo, já que não existe um valor de retorno. Exemplos de uso da função e da rotina acima: valor = Soma(2, 3) Alô "bonoddr"Qualquer dúvida, 'stamos aí.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 10, 2004 Autor Denunciar Share Postado Março 10, 2004 Muitíssimo obrigado cara! Eu estou um pouco acostumado a dividir o código em sub-funções em C++ daí me interessou como procedo na mesma linha de estruturação de código pelo VB. Valeu mesmo, me ajudou bastante!!!bonoddr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Março 11, 2004 Autor Denunciar Share Postado Março 11, 2004 Mais uma coisinha: eu dividi o meu programa em um arquivo principal e 3 módulos. Como especifico no meu arquivo principal a execução de cada um dos módulos?Queria saber também se eu posso especificar estes módulos como functions, ou seja, que retornem algum valor que tenha sido especificado por mim. Então, pego este valor e uso no meu sub principal. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 13, 2004 Denunciar Share Postado Março 13, 2004 Não sei se entendi bem, mas seria isso?Sub Principal() Rotina1 Rotina2 Rotina3 End SubQuanto a retornar valores, só as funções podem fazê-lo. Ou você usará alguma propriedade do módulo (variáveis).Qualquer dúvida, 'stamos aí.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William Rodrigues Postado Março 14, 2004 Denunciar Share Postado Março 14, 2004 Esse post tá doideira Mas, é isso æ pessoal Abraços,William Rodrigues Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
bonoddr
E aí pessoal, preciso de uma ajuda. Preciso saber como faço pra copiar uma linha INTEIRA para alguma outra que eu especifique em VBA Excel. Aguardo respostas, valeu!
bonoddr
Link para o comentário
Compartilhar em outros sites
31 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.