Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
RocketR

Vba - excel não atualiza formula gerada na macro sozinho

Recommended Posts

Estou com um probleminha... Criei uma macro no excel para fazer cadastro de alunos em uma planilha através de um formulário.

Em determinado momento na macro, hora de fazer os registros dos dados do aluno, a macro gera e grava uma formula na nas celulas das colunas F e G, porém as formulas não executam sozinhas, só executam manualmente na base do F2+ENTER. Ao invéz de mostrar o resultado, a celula mostra a formula. Já tentei de tudo.. Já verifiquei se as celulas não estão formatadas como texto, já olhei em opções de cálculo e está tudo automático. Não sei mais o que fazer...

Trecho da macro que faz o registro:

If contador = 0 Then
                    totalregistro = Worksheets("plan1").UsedRange.Rows.Count + 1
                    TR = totalregistro
                    ND = Chr(34) & "" & Chr(34)
                    Cformula = "=SE(D" + TR + "=" + ND + ";" + ND + ";SE(E" + TR + "=" + ND + ";" + ND + ";((D" + TR + "+E" + TR + ")/2)))"
                    Cop = Cformula
                        With Worksheets("Plan1")
                            .Cells(totalregistro, 1) = Caluno
                            .Cells(totalregistro, 2) = Ccurso
                            .Cells(totalregistro, 3) = Cperiodo
                            .Cells(totalregistro, 6) = Cop
                            Cformula = "=SE(F" + TR + "=" + ND + ";" + Chr(34) + "Indefinido" + Chr(34) + ";SE(F" + TR + ">6;" + Chr(34) + "Aprovado" + Chr(34) + ";" + Chr(34) + "Reprovado" + Chr(34) + "))"
                            Cop = Cformula
                            .Cells(totalregistro, 7) = Cop
                            MsgBox "Aluno cadastrado com sucesso"
                            Cnome = ""
                        End With
                Else
                End If

As linhas que atribuem valor á "Cformula" é onde é gerada as formulas das colunas F e G. As formulas ficam da seguinte maneira:

Coluna F:

=SE(D2="";"";SE(E2="";"";((D2+E2)/2)))

(Linha 2 como exemplo)

 

Coluna G:

=SE(F2="";"Indefinido";SE(F2>6;"Aprovado";"Reprovado"))

(Linha 2 como exemplo também)

 

 

Não há nada de errado com as formulas, unico problema é que elas simplesmente não mostram o resultado automáticamente.

Segue em anexo uma imagem da planilha como fica.. a linha 2 foi a que eu dei F2+ENTER manualmente, e a linha 3 é como fica antes disso.

 

Obrigado!!

 

1.png

Editado por RocketR

Compartilhar este post


Link para o post
Compartilhar em outros sites

Duas sugestões:

 

A primeira seria deixar a formula ja digitada na planilha, deixe uma margem de segurança de acordo com o numero de alunos que você tem na escola. umas 100 linhas a mais é o suficiente.

 

A segunda você lança o valor inicial na celula e faz via vba a verificação da media conforme é alterado a planilha.

 

E por ultimo se você quiser inserir a formula pelo VBA siga os passos abaixo.


Inserir formulas por vba você deve utilizar em inglês, faz o seguinte use o gravador de macros com referencia relativa e insira sua formula manualmente vai obter o codigo para inserir a formula sem erros.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • @CasaDoHardware Muito obrigado mesmo cara, salvou! Sou novo aqui no fórum, mas me sinto muito bem vindo! 

     

    O codigo ficou assim:

    If contador = 0 Then
                        totalregistro = Worksheets("plan1").UsedRange.Rows.Count + 1
                            With Worksheets("Plan1")
                                .Cells(totalregistro, 1) = Caluno
                                .Cells(totalregistro, 2) = Ccurso
                                .Cells(totalregistro, 3) = Cperiodo
                                Range("F" & totalregistro).Select
                                ActiveCell.FormulaR1C1 = "=IF(RC[-2]="""","""",IF(RC[-1]="""","""",((RC[-2]+RC[-1])/2)))"
                                Range("G" & totalregistro).Select
                                ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""",""Indefinido"",IF(RC[-1]>=6,""Aprovado"",""Reprovado""))"
                                MsgBox "Aluno cadastrado com sucesso"
                                Cnome = ""
                            End With
                    Else
                    End If

     

     

    Maravilha! Segui seu conselho e usei o gravador de macro com referencia relativa e voilá! Está tudo funcionando muito bem!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×