Página 1 de 1

Erro em Tempo de Execução ( 424 )

Enviado: 28 Mar 2017 às 10:49
por NAJA
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

ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 11:20
por Ryujin
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 :/

ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 11:36
por NAJA
ola amigo
alterei mas nao deu certo... poderia indicar onde está alterando, no corpo do meu codigo ?

ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 11:44
por Ryujin
Eu alterei no Codigo !
Insira aqui o codigo que tem dessa pagina que eu altero , Para ver se resulta :)

ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 11:52
por NAJA
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

Re: ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 12:47
por Ryujin
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

ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 13:27
por NAJA
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 )

Re: ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 13:59
por babdallas
mapas é o VBA da planilha?

ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 15:12
por NAJA
MAPAS E ISS É COMO SE FOSSE O PLAN1 E PLAN2

Re: ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 15:37
por babdallas
Anexa a planilha para poder te ajudar melhor. Se tiver dados confindenciais, troque para dados aleatórios.

ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 16:18
por NAJA
SEGUE O ANEXO

ERRO EM TEMPO DE EXECUCAO ( 424 )

Enviado: 28 Mar 2017 às 16:25
por NAJA
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.

Re: Erro em Tempo de Execução ( 424 )

Enviado: 28 Mar 2017 às 23:57
por babdallas
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.