Página 1 de 1

Loop Não retorna valor Desejado

Enviado: 14 Mar 2017 às 17:29
por MouseBugado
Olá pessoal. Eu tenho o Seguinte problema a resolver, e logo em seguida a minha solução que está com problema.

Em anexo eu deixei um arquivo, que estou trabalhando, e neste arquivo eu criei um eclipse com uma macro para separar os dados.
Imagem

Qual é o propósito dessa macro?
R: Separar Todos os Status de acordo com o bloco.

Para isso eu Criei as pastas de Bloc_1 até Bloc_10, Obviamente Cada Bloco representado na coluna C. há um Status definido para ele.

Qual é o problema a resolver?
R: Para conseguir salvar nas pastas do Excel, eu Utilizei a seguinte Lógica.

Dim Plan(10) As String
Plan(0) = "Bloc_1"
Plan(1) = "Bloc_2"
Plan(2) = "Bloc_3"
Plan(3) = "Bloc_4"
Plan(4) = "Bloc_5"
Plan(5) = "Bloc_6"
Plan(6) = "Bloc_7"
Plan(7) = "Bloc_8"
Plan(8) = "Bloc_9"
Plan(9) = "Bloc_10"

Dim Pos_sheets as integer

Pos_Sheets = 0

While Cont_Bloc <= 10

lógica para gravar os dados na Array estão aqui

Sheets(Plan(Pos_Sheets)).Select

lógica para Colar os dados nas pastas estão aqui

Cont_Bloc = Cont_Bloc + 1
Pos_Sheets = Pos_Sheets + 1

Wend



O que esse Código Faz?
R: Ele Grava todos os dados de cada APTO e salva em uma Arrray. Logo Após ele seleciona a pasta Correspondente e salva os dados gravados nas arrays Nas células das pastas Bloc_1 até 10. E para Finalizar eu limpo os Dados da Array, e retorna o Loop na linha " Cont_Bloc = Cont_Bloc+1 ".

Aonde está o Erro?]
R: O código está Funcionando, Todos os Apartamentos do Bloco 01, Estão sendo salvos em seu respectivo Status da pasta "Bloc_1", Mas quando ele finaliza o processo ele não está fazendo o laço de forma correta, e os dados do Bloco 02 não estão sendo salvos na pasta correta. E estou precisando de ajuda para achar o erro nesse algoritmo.

Por que estou usando o VBA?
R: Esse processo terá atualizações diárias dos Status dos apartamentos, Sempre haverá atualizações e conferir 1 por 1 de Vários empreendimentos, "Esse Molinere é somente 1 deles" me faria perder MUITO tempo.

Código completo disponível no pastebin
vel no Pastebinhttp://pastebin.com/dtEeKJtp

Em anexo o Arquivo no qual estuo trabalhando.

Re: Loop Não retorna valor Desejado

Enviado: 14 Mar 2017 às 18:30
por gfranco
Boa tarde.
Veja se o anexo ajuda.
Dê retorno.
at
gfranco

Loop Não retorna valor Desejado

Enviado: 14 Mar 2017 às 19:10
por MouseBugado
Amigo eu não sei como te explicar.

Mas você resolveu em 1 hora o que estou martelando durante 3 Dias.
Eu entendi a lógica, não tenho dúvidas sobre, Mas há alguns comandos que eu não conheço.

Seria possível termos uma conversa no hangout, me perdoa mas eu não me contento somente com o resultado, Eu quero entender a sua linha de raciocínio e quero aprender a fazer, acho isso muito importante.

Agradeço desde já...

Loop Não retorna valor Desejado

Enviado: 14 Mar 2017 às 19:16
por gfranco
Fico feliz que tenha sido suficiente a solução.
Qual comando tem duvida?

Loop Não retorna valor Desejado

Enviado: 14 Mar 2017 às 19:34
por MouseBugado
2 Dim w As Worksheet, t As Long
Para que serve exatamente esses Tipos de variáveis "WorkSheet" e "Long" OU aonde eu posso aprender melhor sobre?

Set w = Plan2
Qual a Diferença entre Set e DIM ?

If w.AutoFilterMode = True Then w.AutoFilterMode = False
Eu compreendi que se o Filtro estiver ligado, desligue. mas anteriormente W Foi definido como Plan2
E por que têm, esse W. anterior ao Filtermode? aonde eu posso aprender mais sobre propriedades?

For I = 2 To t
APTO = w.Cells(I, 2)
bloco = w.Cells(I, 3)
status = UCase(w.Cells(I, 4))
bloco = Right(bloco, 2) + 0


ok, para i = 2 = T, Mas pelo que eu entendi o T é uma String
t = w.Cells(w.Cells.Rows.Count, 1).End(xlUp).Row

Ou essa linha "w.Cells(w.Cells.Rows.Count, 1).End(xlUp).Row" retorna um número?
poderia me ajudar a compreender melhor essa linha, ou um local aonde eu possa estudar melhor sobre ela ?

Re: Loop Não retorna valor Desejado

Enviado: 14 Mar 2017 às 19:45
por gfranco
Utilizei a variável W para manipular um objeto do tipo planilha ( por isso "as worksheet")
Utilizei o "SET" para "SETAR" a variável na planilha que eu queria trabalhar O dim serve para declarar e o set para setar(apontar)
O "T" é uma variável para receber número...Valor inteiro, na faixa de -2.147.483.648 até 2.147.483.647.
T = w.Cells(w.Cells.Rows.Count, 1).End(xlUp).Row retorna um número que corresponde à ultima linha preenchida ( no caso do 1 refere-se à coluna "A") da planilha W
A propriedade cells permite uma maior flexibilidade em "caminhar" pelas células... em vez de "A1", pode-se utilizar cells(1,1) mas é questão de costume....(vício) pois poderia utilizar o "range" também dentro do loop

O canal do Alessandro Trovato (youtube) contém material de excelente qualidade.

Abraços
gfranco

Loop Não retorna valor Desejado

Enviado: 14 Mar 2017 às 19:50
por MouseBugado
Irei dar uma olhada no canal sim..
Muito obrigado amigo.


Moderador, Tópico resolvido, pode fechar ai.

Loop Não retorna valor Desejado

Enviado: 15 Mar 2017 às 11:56
por gfranco
bom dia MouseBugado.
Vc deve fechar o tópico marcando-o como "RESOLVIDO".