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.
Por NAJA
#21836
ola pessoal.. sou programador do tempo dos dinossauros ( cobol, clipper, dataflex, etc.. ) e agora estou tentando entender o VBA

tenho este codigo que captura dados da guia iss e preenche na guia mapas e, apos isso, imprime a mapas

esta dandop o erro 424 na instução ( mapas.range ) .. algeum pode me ajudar

Sub listamapa()

mapas.Range("a2:D50").ClearContents
ultimalinha = iss.Cells(Rows.Count, "a").End(xlUp).Row

lin = 3
For i = 3 To ultimalinha
If iss.Cells(i, 6) > 0 Then
mapas.Cells(3, 8) = "marco/2017"
mapas.Cells(6, 2) = iss.Cells(i, 1)
mapas.Cells(6, 4) = iss.Cells(i, 2)
mapas.Cells(8, 6) = iss.Cells(i, 5)
mapas.Cells(10, 6) = iss.Cells(i, 4)
mapas.Cells(14, 6) = iss.Cells(i, 6)
mapas.Cells(16, 6) = iss.Cells(i, 7)
mapas.Cells(18, 6) = iss.Cells(i, 8)
mapas.Cells(20, 6) = iss.Cells(i, 9)
mapas.Cells(23, 6) = iss.Cells(i, 10)
mapas.Cells(30, 3) = iss.Cells(i, 11)
mapas.Cells(30, 6) = iss.Cells(i, 12)

Sheets("mapas").Select
Range("A1:G20").Select
Selection.PrintOut Copies:=1, Collate:=True

lin = lin + 1
End If
Next

End Sub
Por Ryujin
Posts
#21837
Tente assim
Declare o Range como uma variavel

Dim rng As Range ( no inicio do programa e onde tem o range agora faça assim

Set rng = .Range("A1:G20")

Experimente e Diga como ficou :)) , Nao sou profissional ! por isso se nao funcionar desculpe :/
Por NAJA
#21842
Sub listamapa()

mapas.Range("a2:D50").ClearContents
ultimalinha = iss.Cells(Rows.Count, "a").End(xlUp).Row

lin = 3
For i = 3 To ultimalinha
If iss.Cells(i, 6) > 0 Then
mapas.Cells(3, 8) = "marco/2017"
mapas.Cells(6, 2) = iss.Cells(i, 1)
mapas.Cells(6, 4) = iss.Cells(i, 2)
mapas.Cells(8, 6) = iss.Cells(i, 5)
mapas.Cells(10, 6) = iss.Cells(i, 4)
mapas.Cells(14, 6) = iss.Cells(i, 6)
mapas.Cells(16, 6) = iss.Cells(i, 7)
mapas.Cells(18, 6) = iss.Cells(i, 8)
mapas.Cells(20, 6) = iss.Cells(i, 9)
mapas.Cells(23, 6) = iss.Cells(i, 10)
mapas.Cells(30, 3) = iss.Cells(i, 11)
mapas.Cells(30, 6) = iss.Cells(i, 12)

Sheets("mapas").Select
Range("A1:G20").Select
Selection.PrintOut Copies:=1, Collate:=True

lin = lin + 1
End If
Next

End Sub
Por Ryujin
Posts
#21845
Amigo eu não entendi uma coisa ...
Onde você declara o i?
E para que usa o Lin? Não será que enganou-se e quis usar apenas uma das variaveis? Se for esse o caso penso que vai dar assim :/

Código: Selecionar todos
Sub listamapa()
Dim rng As Range


mapas.rng("A2:D50").ClearContents
ultimalinha = iss.Cells(Rows.Count, "A").End(xlUp).Row

i = 3
For i = 3 To ultimalinha
If iss.Cells(i, 6) > 0 Then
mapas.Cells(3, 8) = "marco/2017"
mapas.Cells(6, 2) = iss.Cells(i, 1)
mapas.Cells(6, 4) = iss.Cells(i, 2)
mapas.Cells(8, 6) = iss.Cells(i, 5)
mapas.Cells(10, 6) = iss.Cells(i, 4)
mapas.Cells(14, 6) = iss.Cells(i, 6)
mapas.Cells(16, 6) = iss.Cells(i, 7)
mapas.Cells(18, 6) = iss.Cells(i, 8)
mapas.Cells(20, 6) = iss.Cells(i, 9)
mapas.Cells(23, 6) = iss.Cells(i, 10)
mapas.Cells(30, 3) = iss.Cells(i, 11)
mapas.Cells(30, 6) = iss.Cells(i, 12)

Sheets("mapas").Select

Set rng = .Range("A1:G20")

Selection.PrintOut Copies:=1, Collate:=True

i = i + 1
End If
Next

End Sub
Por NAJA
#21849
VEJA.. A ABA ISS EM VARIAS LINHAS E EM CADA LINHA HA O REGISTRO DE UM CLIENTE E SEUS DADOS. USO O (I) PARA AVANÇAR CADA LINHA, ATE QUE ELE ENCONTRE UMA LINHA VAZIA.

ENTAO, SE A LINHA (I), COLUNA 6 FOR > QUE 0, MOVE ALGUMAS CEULAS DA GUIA ISS PARA A GUIA MAPAS E, MANDA IMPRIMIR E, ADICIONA + 1 A (I) PARA LER A PROXIMA LINHA. MAS, MESMO COM A ALTERACAO QUE FEZ AINDA DÁ O ERRO EM EMPO DE EXECUCAO NA LINHA DE COMANDO ( mapas.rng("A2:D50").ClearContents )
Por babdallas
#21851
mapas é o VBA da planilha?
Por babdallas
#21860
Anexa a planilha para poder te ajudar melhor. Se tiver dados confindenciais, troque para dados aleatórios.
Por NAJA
#21863
EU PRECISO LER, LINHA A LINHA DA ABA ISS E, MONTAR A ABA MAPAS COM ALGUNS DADOS DA ABA ISS E, MANDAR IMPRIMIR DENTRO DO LOOP. QUANDO ENCONTRAR O FIM DA ABA ISS (QUANDO NAO TIVER MAIS DADOS A LER), SAIR DO LOOP.
Por babdallas
#21880
Evite usar células mescladas. Caso seja realmente necessário e precise apagar valores de células mescladas, pode ser necessário vocês desmesclar, executar a ação e depois mesclar novamente.
Outra coisa, na sua planilha o nome VBA da planilha Mapas é Plan2. Por isso, no seu código substitua mapas por worsheets("mapas") ou por Plan2. O meso vale para iss, substituindo por worksheets("iss") ou por Plan1. Entendi o que você quer fazer é bem simples, mas sugiro que primeiro você elimine células mescladas que serão alteradas pelo código e depois faça as alterações que te falei. Deverá funcionar.
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