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.
#52447
Bom dia!

Pessoal,

Tenha uma planilha onde descrevo etapas de uma operação que pode ter três, seis ou até vinte e sete passos, sendo o mais comum ter seis. O trabalho consiste em seguir os passos e no retorno fazer a sequência inversa, ou seja, o último passo será o primeiro no retorno. Esses passos são numerados porque tenho que segui-los à risca. Coloquei umas fórmulas para facilitar o trabalho pois é muito repetitivo e também uma macro para gerar um sequencial e outra para o cursor saltar para a célula onde devo preencher. O problema é que como os passos variam muito não dá para definir a última célula e assim retornar do último ao primeiro. A fórmula já me dar esse retorno na sequência inversa correta, colocando o passo um, no vinte e sete, o dois no vinte e seis e assim, sucessivamente. Gostaria que alguém me desse uma macro que colocasse o passo um no retorno um, o dois no retorno dois e aí, segue e, que configurasse a página de impressão conforme o seu tamanho, ou seja, para até seis passos um folha A4 cabe em frente e verso, para oito ou dez por exemplo, teria duas ou mais folhas, etc. O modelo segue em anexo.

Desde já, agradeço.
Você não está autorizado a ver ou baixar esse anexo.
#53085
Bom dia!

Pessoal,
Eu estive tentando resolver e quase consegui, só que esbarrei na seguinte dificuldade:
Fiz uma macro que copia para duas colunas ao lado que ficarão ocultas. Daí, identifico a última linha e vou copiando de baixo para cima. O problema é que como são variáveis não sei como parar a macro. No exemplo em anexo coloquei uma saída na linha 07 com "If UltCel.Select = "" Then Exit Sub", porém precisa ser dinâmica. Alguém poderia me ajudar?
Desde já, agradeço.

Eudes Militão
Você não está autorizado a ver ou baixar esse anexo.
#53092
Veja se ajuda.
Considerei o arquivo do seu primeiro post acima.

preparação
1. limpe a planilha Operações a partir da linha 153 para baixo
2. insira uma planilha vazia, nomeie de Retorno, acerte a largura das colunas A:Z = 3,5, coloque o cabeçalho em A1:Z7

Rode o código abaixo. O resultado será colocado na planilha Retorno.
Código: Selecionar todos
Sub Retorno()
 Dim LR As Long, k As Long, m As Long
  Application.ScreenUpdating = False
  If Sheets("Retorno").[A9] <> "" Then Sheets("Retorno").Range("A9:V" & Sheets("Retorno").Cells(Rows.Count, 1).End(3).Row).Clear
  LR = Sheets("Operações").Cells(Rows.Count, 6).End(3).Row
  For k = LR To 14 Step -5
   Sheets("Operações").Cells(k - 3, 1).Resize(4, 22).Copy
   Sheets("Retorno").Cells(Rows.Count, 1).End(3)(3).PasteSpecial xlValues
   Sheets("Retorno").Cells(Rows.Count, 1).End(3)(-2).NumberFormat = "@"
   Sheets("Retorno").Cells(Rows.Count, 1).End(3)(-2) = Format(m + 1, "00") & ".": m = m + 1
  Next k
  Application.ScreenUpdating = True
End Sub
#53123
EudesMilitao escreveu: ... aparece a seguinte mensagem de erro:
"O método Activate da classe Range falhou".
Isso é estranho, pois no código que passei não existe o comando Activate. ;)

Outra coisa, eu preciso que onde for "abrir" em Operações, em Retorno seja "fechar" e vice-versa.
Substitua as linhas do código conforme indicado abaixo.
substitua estas linhas
Código: Selecionar todos
   Sheets("Retorno").Cells(Rows.Count, 1).End(3)(3).PasteSpecial xlValues
   Sheets("Retorno").Cells(Rows.Count, 1).End(3)(-2).NumberFormat = "@"
   Sheets("Retorno").Cells(Rows.Count, 1).End(3)(-2) = Format(m + 1, "00") & ".": m = m + 1
por estas
Código: Selecionar todos
   With Sheets("Retorno")
    .Cells(Rows.Count, 1).End(3)(3).PasteSpecial xlValues
    .Cells(Rows.Count, 6).End(3)(-1) = IIf(.Cells(Rows.Count, 6).End(3)(-1) = "ABRIR", "FECHAR", "ABRIR")
    .Cells(Rows.Count, 1).End(3)(-2).NumberFormat = "@"
    .Cells(Rows.Count, 1).End(3)(-2) = Format(m + 1, "00") & ".": m = m + 1
   End With
obs. se ocorrer algum erro então disponibilize o arquivo exatamente nas condições em que o erro ocorre, informe corretamente sobre a mensagem de erro e informe qual a linha do código que é destacada em amarelo
#53149
E não é isso que o código faz?

Disponibilize um novo arquivo e coloque na planilha o resultado que o código está gerando e ao lado coloque o resultado desejado.

Você não mais se manifestou sobre o erro ... ;) ... o que houve ?
#53193
EudesMilitao escreveu: Na Plan Retorno está o resultado gerado e ao lado em azul, está o esperado.
O resultado só aparece diferente do esperado se ao rodar o código a planilha Operações for a planilha ativa.
Essa diferença ocorre porque você removeu o ponto do início de uma das linhas de comando que coloquei no post #53123
A propósito, você colocou o código no módulo da planilha. Embora ali também funcione, é recomendável colocar o código em um módulo comum (Inserir / Módulo) deixando o módulo da planilha somente para receber eventos de planilha.


Não ocorreu mais o erro do início.
Que bom! Isso significa que o Duende foi zuar outro ... :)
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