Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#39606
Olá, gostaria de criar uma rotina onde, a cada vez que eu executar a macro, a macro deverá escrever até a ultima linha da coluna P, que é a linha 1048576. Se houverem mais dados a serem escritos, a macro deverá escreve-los na coluna seguinte, coluna Q, começando pela linha 2. E de novo, a cada vez que executo a macro, deverá escrever ate a ultima linha dessa nova coluna e passando para a proxima, se houver necessidade. E assim por diante. Não sei por onde começar, não tenho nem um esboço de codigo pra apresentar. Se alguém tiver alguma ideia, fico grato.
#39609
Bom dia.

Sugiro postar um modelo de sua planilha (com dados fictícios mas mesma estrutura)
Poste um modelo em Excel (não uma imagem) de preferência com uma demonstração manual do resultado pretendido.
Para anexar o arquivo, clique em +Resposta e localize a opção de "adicionar um anexo" logo abaixo da janela de digitação de mensagens.
#39629
Boa tarde. Na planilha que anexei, a cada vez que é executada a macro gera 100.000 numeros aleatorios e escreve na proxima linha vazia, de modo que vai acumulando esses numeros na coluna C.
Quando houverem 1.000.000 numeros, a proxima execução vai dar erro porque seriam 1.100.000 numeros, sendo que o limite de linhas do excel é de até 1048576. Não cabem 1.100.000 numa coluna.
Eu quero que a macro continue escrevendo, na coluna D, o que não coube na coluna C. E depois quando a coluna D estiver cheia, continue escrevendo na Coluna E. Assim por diante.
Mudando de coluna.xlsm
Você não está autorizado a ver ou baixar esse anexo.
#39639
Olá Domingsp,

Tente a macro abaixo.

Obs. Quando a coluna é completada, a macro pula para a seguinte ASSUMINDO que ela está necessariamente vazia. Se não for esse o caso, é necessário definir qual procedimento deve ser adotado, e alterar a macro.

Sub Teste()
Limite = Rows.Count
LinIni = 2
For Ucol = 3 To 16384
If Cells(Limite, Ucol).Value = "" Then Exit For
Next
Ulin = Cells(Limite, Ucol).End(xlUp).Row + 1
If Ulin < LinIni Then Ulin = LinIni
For m = 1 To 100000
If Ulin > Limite Then Ucol = Ucol + 1: Ulin = LinIni
Cells(Ulin, Ucol) = Int((340 - 16 + 1) * Rnd)
Ulin = Ulin + 1
Next
End Sub


Jimmy San Juan
#39670
Experimente:
Código: Selecionar todos
Sub ColunaCheia()
 Dim S(), i As Long, LR As Long, LC As Long, k As Long
  LC = Cells(2, Columns.Count).End(1).Column
  If LC < 3 Then LC = 3
  LR = Cells(Rows.Count, LC).End(3).Row
  
  If Rows.Count - LR >= 100000 Then
   ReDim S(1 To 100000, 1 To 1)
    For i = 1 To 100000
     S(i, 1) = Int((340 - 16 + 1) * Rnd + 0)
    Next i
   Cells(LR + 1, LC).Resize(100000).Value = S
  Else
   k = LR + 1
   ReDim S(1 To (Rows.Count - LR), 1 To 1)
    For i = 1 To (Rows.Count - LR)
     S(i, 1) = Int((340 - 16 + 1) * Rnd + 0)
    Next i
   Cells(k, LC).Resize(Rows.Count - LR).Value = S
   LC = LC + 1: k = 2
   ReDim S(1 To 100000 - (Rows.Count - LR + 1), 1 To 1)
    For i = 1 To 100000 - (Rows.Count - LR + 1)
     S(i, 1) = Int((340 - 16 + 1) * Rnd + 0)
    Next i
   Cells(k, LC).Resize(100000 - (Rows.Count - LR + 1)).Value = S
  End If

End Sub

long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord