Ir para o conteúdo
amss1976

Inserir fórmulas em excel através de vba

Mensagens Recomendadas

amss1976

Bom dia,

Estou com um problema: não consigo/sei inserir as seguintes fórmulas nas células do excel através de VBA. Se alguém me pudesse ajudar... :P

  • =SE(OU(E4="";F4="");"";F4*E4)
  • =SE(OU(G4="";$B$19="");"";ARRED(I4/E4;2))
  • =SE(OU(G4="";$B$19=0);"";ARRED(G4/$B$19;2))    [nesta fórmula no "$B$19", o 19 estaria de pendente do n.º de linhas ocupadas e vai variar de ficheiro para ficheiro]
  • =SE(I4="";"";ARRED(I4/$I$19;4))    [nesta fórmula no "$I$19", o 19 estaria de pendente do n.º de linhas ocupadas e vai variar de ficheiro para ficheiro]
  • =SE(OU(J4="";$E$181="");"";ARRED(J4*$E$181;2))    [nesta fórmula no "$E$181", o 181 estaria de pendente do n.º de linhas ocupadas e vai variar de ficheiro para ficheiro]
  • =SE(OU(I4="";K4="");"";ARRED(M4/E4;2))

Consigo introduzir por exemplo =ARRED(I4/E4;2), mas se tento usar o "SE" ou o "OU", dá-me erro (Run-time error '1004').

Se for preciso disponibilizar o ficheiro posso faze-lo.

O mais certo é ser um erro de "principiante".

Obrigado desde já pela ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Não tenho a certeza, porque uso sempre a formula em Inglês, mas podes definir em inglês desta forma

Range("a1").Formula = "=IF(..."

Podes também tentar em Português usando a propriedade FormulaLocal:

Range("a1").FormulaLocal = "=SE(..."

Esta última não tenho a certeza se funciona :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
amss1976

Não tenho a certeza, porque uso sempre a formula em Inglês, mas podes definir em inglês desta forma

Range("a1").Formula = "=IF(..."

Podes também tentar em Português usando a propriedade FormulaLocal:

Range("a1").FormulaLocal = "=SE(..."

Esta última não tenho a certeza se funciona ;)

Já tentei quer com formula (com o se) quer com formulalocal (com o if) e dá-me sempre o mesmo erro...  :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Ao contrário ... formula = "IF(..." e formulalocal="SE(...". Até indicando como value deve dar.

Atenção que o separador é a virgula :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
amss1976

Ao contrário ... formula = "IF(..." e formulalocal="SE(...". Até indicando como value deve dar.

Sim era isso que queria dizer. :D

Atenção que o separador é a virgula ;)

Não percebi a virgula ser o separador...  :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
amss1976

Mostra lá como fizeste com o "if" e com o "se"

Fiz assim:

Row = 4
Col = 9
Cells(Row, Col).FormulaLocal = "=SE(OU(G4="";$B$19=0);"";ARRED(G4/$B$19;2))"
Cells(Row, Col).Select
Selection.Copy
For Row = 4 To Row + Nartigos - 1
    Cells(Row, Col).Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.Copy
Next Row

e assim:

Row = 4
Col = 9
Cells(Row, Col).Formula = "=IF(OR(G4="";$B$19=0);"";ROUND(G4/$B$19;2))"
Cells(Row, Col).Select
Selection.Copy
For Row = 4 To Row + Nartigos - 1
    Cells(Row, Col).Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.Copy
Next Row

E dá o erro que disse no post anterior. :wallbash:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Atenção que o separador é a virgula ;)

Cells(Row, Col).Formula = "=IF(OR(G4="",$B$19=0),"",ROUND(G4/$B$19,2))"

e não

Cells(Row, Col).Formula = "=IF(OR(G4="";$B$19=0);"";ROUND(G4/$B$19;2))"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
amss1976

Cells(Row, Col).Formula = "=IF(OR(G4="",$B$19=0),"",ROUND(G4/$B$19,2))"

Mesmo usando dessa forma continua a dar o mesmo erro... :mad:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

Mesmo usando dessa forma continua a dar o mesmo erro... :mad:

O problema é das aspas ... é preciso duplicar para que ele entenda como aspas. Assim deve dar:

Cells(1, 1).Formula = "=IF(OR(G4="""",$B$19=0),"""",ROUND(G4/$B$19,2))"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
amss1976

O problema é das aspas ... é preciso duplicar para que ele entenda como aspas. Assim deve dar:

Cells(1, 1).Formula = "=IF(OR(G4="""",$B$19=0),"""",ROUND(G4/$B$19,2))"

:cheesygrin:

Era mesmo esse o problema, a falta de aspas. No entanto em vez de vírgulas, usei ";". Obrigado pela ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.