Ir ao conteúdo
  • Cadastre-se

Criar lógica If Else no Excel usando Macros


Posts recomendados

Bom dia Galera!!

 

Estou tentando criar uma planilha no excel da seguinte forma:

 

Plan1 = "Tela de Cadastro"

Plan 2 = "Janeiro"

Plan 3 = "Fevereiro"

E assim sucessivamente, cada planilha receberá o nome de cada mês.

 

Na tela de cadastro terá as seguintes informações, como exemplo:

 

Mês           Data             Titulo      Valor

janeiro       02/02/15       Ação        15,00

 

Como fazer para salvar o dados do cadastro na planilha correspondente ao mês?

Por exemplo: Se for Mês de Janeiro, salvar dados na Plan2, se for fevereiro salvar dados na plan3.

Link para o comentário
Compartilhar em outros sites

O ideal é renomear as planilhas para o mês correspondente para facilitar o cadastro.

Aí bastaria fazer algo desse tipo.

Dim WkMes As RangeDim WkCad as RangeSet WkMes = Worksheets("Janeiro")Set WkCad = Worksheets("Tela de Cadastro")WkMes.Range("A1").Value = WkCad.Range("A1").ValueWkMes.Range("A2").Value = WkCad.Range("A1").Value
Mas se não for possível renomear as planilhas, você pode criar uma tabela na planilha de cadastro para que a macro faça um vlookup ou find para identificar qual é a sheet correspondente ao mês
Link para o comentário
Compartilhar em outros sites

Desculpe, mais ficou confuso pra mim. Tentei fazer conforme orientado e deu erro.

Tirei um print da planilha pra ver se ajuda.

 

post-757103-0-03848400-1424963109_thumb.

 

Os dados cadastrado nessa tela deverá ser direcionado para a próxima planilha caso atenda a seguinte condição. Se mês de Janeiro, cadastrar na planilha janeiro. Se fevereiro, cadastrar na planilha fevereiro e assim por diante.

 

Link para o comentário
Compartilhar em outros sites

Você tem algum conhecimento em programação VBA?

Se você tentou rodar a macro que eu postei sem fazer nenhuma alteração, vai dar erro mesmo. É necessário fazer as alterações necessárias para adaptar ao seu caso.

Quanto aos valores que serão registrados nas planilhas do mês, a ideia é salvar sempre no mesmo Range? Ou você vai querer que os dados sejam salvos na forma de tabela sem perder os dados anteriores?

Link para o comentário
Compartilhar em outros sites

Imaginando que você tenha um conhecimento mínimo de VBA você pode usar um SELECT CASE jogando o nome da Sheet correspondente ao mes numa variavel. por exemplo:

 

SELECT CASE valor_da_celula_com_mes

CASE Janeior

   var_nome_da_sheet = SJaneiro

CASE FEVEREIRO
  var_nome_da_shee = SFevereiro

....etc

 

depois voce seleciona as celulas que voce quer guardar.

 

depois copia

 

depois cola na Sheet certa, informando no local de colar a Sheet armazenada na variavel

 

*importante verificar a proxima linha disponível (em branco) antes de colar... pra evitar sobrepor os dados

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Deyvisson bom dia, 

 

Eu já havia postado anteriormente um exemplo, atendendo a uma situação parecida a sua:

http://forum.clubedohardware.com.br/forums/topic/1103827-planilha-com-datas/

 

Infelizmente o colega, não quis usar a seu favor o poder da programação e preferiu fazer tudo manualmente (a criação das centenas de 'abas') e usar formulas para obter os dados a cada 'aba'.

 

Mas vamos lá, voltando ao seu caso, como voce não postou um modelo ou exemplo, criei um com os dados que informou, veja e consegue se adaptar, ou adaptar o codigo a seu cenário:

 

No modelo que anexei: Aperte o botão para executar a macro. 
Em qualquer aba que estiver, aperte ( CLTR + q ),  para retornar a aba (tela de cadastro) 
 
A macro em questão, verifica se existir ou não, e cria uma nova plan (aba) renomeando de acordo com o mes (coluna A  desta aba),  em seguida copia a linha toda com os dados para a respectiva aba. 
 
Na (coluna E), é criado uma chave (uma serial unica), para que a macro verifique se o registro já existe ou nao na aba do respect. mes. * SE QUISER PODE OCULTAR ESTA COLUNA
 
Na (coluna F), é criado em cada linha,  um atalho automatico, para que possa acessar a aba em que está o respect. registro.:
 
abx. 
 

Sub Verif_EnvRg_Abas()    Dim sh As Worksheet, Pla As Boolean    Dim Mes As String, chv As String    Dim rng As Range, C As Range, rngNC As Range    Dim i As Long: i = 2    Dim ct As String: ct = 0    Dim rg As String: rg = 0    With Sheets("Tela de Cadastro")        .Activate        Application.DisplayAlerts = False        For i = i To Range("a" & Rows.Count).End(xlUp).Row            If .Range("a" & i).Value = "" Then GoTo px            Mes = Trim(UCase(Left(.Range("a" & i).Value, 1)) & Mid(.Range("A" & i), 2))            Set rng = .Range(.Cells(i, "a"), .Cells(i, "e"))            Set rngNC = .Range(.Cells(1, "a"), .Cells(1, "e"))            chv = .Range("a" & i).Value & .Range("b" & i).Value & .Range("c" & i).Value & .Range("d" & i).Value            .Range("e" & i).Value = chv            For Each sh In Worksheets                If sh.Name Like Mes Then Pla = True: Exit For            Next            If Pla = True Then                uld = Sheets(sh.Index).Range("a" & Rows.Count).End(xlUp).Row + 1                Set C = Sheets(sh.Index).Range("e2:e" & uld).Find(chv, , LookIn:=xlValues, Lookat:=xlWhole)                If C Is Nothing Then                    Sheets(sh.Index).Range("a1:e1").Value = rngNC.Value                    Sheets(sh.Index).Range("a" & uld & ":e" & uld) = rng.Value                    .Range("f" & i).FormulaR1C1 = "=HYPERLINK(""[" & ThisWorkbook.Name & "]" & Mes & "!A1"",""CLICK AQUI"")"                    rg = rg + 1                End If            Else                Sheets.Add After:=Sheets(Sheets.Count)                ActiveSheet.Name = Mes                ActiveSheet.Range("a1:e1").Value = rngNC.Value                uld = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row + 1                ActiveSheet.Range("a" & uld & ":e" & uld) = rng.Value                .Range("f" & i).FormulaR1C1 = "=HYPERLINK(""[" & ThisWorkbook.Name & "]" & Mes & "!A1"",""CLICK AQUI"")"                ct = ct + 1                rg = rg + 1            End If            Pla = Falsepx:        Next i        .Activate        MsgBox ct & " Plan(abas) novas foram criadas" & Chr(10) & rg & " Registros copiados", 0, " Sucesso"    End WithEnd Sub

Tela de cadastro-Exemplo.zip

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Antes de mais nada, gostaria de agradecer a todos que dedicaram uns minutinhos do seu tempo para tentar me ajudar, estou certo que atitudes como essa parte de pessoas nobres.

 

Basole, ficou incrível o modelo de planilha que você criou!!!

Estou buscando aprender um pouco sobre programação  e confesso que passei horas tentando entender as linhas de códigos que você criou para a planilha. 

 

Bom, como estou começando agora em VBA e não sei muito sobre os conceitos utilizados na ferramenta, tentei apenas adaptar a planilha que você gentilmente codificou.

Vou postar o link pra você ver como ficou e pedir sua ajuda para tentar colocar a mesma formatação (cor da celular, fonte, tamanho...) automaticamente para todas as planilhas assim que efetuar o cadastro. É possível?

 

Basole, se não for pedir muito, me fala um pouco sobre as linha de código que você criou nessa planilha? Quero entender um pouco mais e tentar fazer outros modelos.

 

 

Tela de cadastro-Alterada.rar

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...