Notifications
Clear all

Inverter linhas

9 Posts
4 Usuários
0 Reactions
2,127 Visualizações
(@rdrequiao)
Posts: 0
New Member
Topic starter
 

Boa tarde,

Estou com o seguinte problemas: preciso inverter os dados de diversas linhas, mas não tenho como fazer isso manualmente (20 mil linhas, 4 mil colunas). Procurando na internet, encontrei um site com um código que resolveria meu problema ( https://www.extendoffice.com/documents/ ... -rows.html). O código é o seguinte:

Sub FlipRows()
'Updateby20131126
Dim Rng As Range
Dim WorkRng As Range
Dim Arr As Variant
Dim i As Integer, j As Integer, k As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Arr = WorkRng.Formula
For i = 1 To UBound(Arr, 1)
    k = UBound(Arr, 2)
    For j = 1 To UBound(Arr, 2) / 2
        xTemp = Arr(i, j)
        Arr(i, j) = Arr(i, k)
        Arr(i, k) = xTemp
        k = k - 1
    Next
Next
WorkRng.Formula = Arr
End Sub

Porém, quando tento rodar esse macro, recebo a mensagem "erro de sintaxe" enquanto a linha de commando "For j = 1 To UBound(Arr, 2) / 2" fica destacada em vermelho. Alguém saberia como resolver esse problema?

 
Postado : 26/05/2017 9:42 am
(@felipemazz)
Posts: 0
New Member
 

Amigo, vc determinou que o j é integer, se ele tentar dividir o segundo maior valor por 2, e retornar um número quebrado, você já tem um problema.

Veja se é isto.

 
Postado : 26/05/2017 10:43 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

rdrequiao,

Boa tarde!

Solicitamos, por gentileza, nas próximas postagens de códigos VBA aqui no fórum, utilizar a TAG CODE existente no inicio da caixa de mensagem. Isso manterá o fórum mais organizado.

 
Postado : 26/05/2017 10:53 am
(@rdrequiao)
Posts: 0
New Member
Topic starter
 

felipemazz,

Obrigado pela resposta, mas não sei se fui claro. Esse código não é meu e, sinceramente, não sei nem como ler direito. Eu diria que o problema não é retornar um número quebrado, já que o erro é acusado antes de ser feita qualquer análise; só de colar esse código no módulo, a linha de commando referida acima já fica em vermelho.

wagner,

Ok, desculpe-me pelo incoveniente.

 
Postado : 26/05/2017 10:56 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

rdrequiao,

Boa tarde!

Você deve anexar o seu arquivo, compactado com .ZIP, aqui no fórum. Só uma rotina fica muito difícil se achar o erro que você comenta. Eu, por exemplo, colei o código aqui em um módulo e não ocorreu nenhum erro ao colar. Nenhuma linha é destacada. Porém, como não tenho os dados na planilha, fica difícil, rodar, depurar e localizar erros.

 
Postado : 26/05/2017 11:30 am
(@rdrequiao)
Posts: 0
New Member
Topic starter
 

wagner,

Engraçado, quando faço a mesma coisa aqui, abro um arquivo sem nenhum dado e colo o código num módulo, o erro na linha de comando mencionada é acusado instantâneamente. Depois de ler seu comentário, testei num outro computador e o código funcionou perfeitamente. Não sei se isso seria uma explicação, mas uma coisa que reparei é que eu uso o Excel 2007 no meu computador, enquanto, no outro que testei, é utilizado o Excel 2013.

 
Postado : 26/05/2017 12:41 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

rdrequiao,

Pode até ser incompatibilidade de versões... não sei. Meu Excel é 2007 e, como disse, funcionou normalmente.

 
Postado : 26/05/2017 12:44 pm
(@edcronos2)
Posts: 0
New Member
 

aqui tbm não deu nenhum erro, excel 2010 32b

tenta colocar For j = 1 To Int(k / 2) em vez de For j = 1 To UBound(Arr, 2) / 2

 
Postado : 26/05/2017 1:02 pm
(@rdrequiao)
Posts: 0
New Member
Topic starter
 

edcronos2,

Continua não funcionando. Quando faço a substituição sugerida, aparece a seguinte mensagem:

Erro de copilação:
Era esperado: fim da instrução

A linha de commando "For j = 1 To Int(k / 2)" continua destacada em vermelho, enquanto a parte "To" aparece como se estivesse selecionada (como quando selecionamos um texto para copiar).

*Quando volto com a linha de commando antiga, aparece essa mesma mensagem de erro com o mesmo destaque no "To".

 
Postado : 29/05/2017 10:33 am