USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Validar texto como parte de fórmula no excel?
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/08/2009 00:15 hs         
Galera, para quem manja bem de excel e de programação VBA, saberia me dizer como eu faço via excel design ou via VBA para eu validar um célula com um texto "A1:A20" , por exemplo, seja validado, como no VBA, VB, JavaScript usando um tipo de função "VAL", "EVAL", respectivamente.

Assim o intervalo seria conhecido como parte da fórmula e não como um texto em funções do tipo SOMA, MEDIA, etc......

Grato.
   
DeFreitas
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/08/2009 09:11 hs            
Bom dia.

Amigo,

Veja se isso pode lhe servir:

Plan1.Evaluate("Sum(A1,B1)")  'ou: Plan1.Evaluate("Sum(A1:B1)")

Aqui, o método Evaluate executa a rotina Sum() para o intervalo A1:B1, isto é, SOMA o contéudo das duas células.

Bom, não sei é bem isso o que precisa, mas vejamos o que dirá.

Em todo caso, estude um pouco sobre o método Evaluate, pois é equivalente às funções Eval() do VBScript e Eval() do JScript/JavaScript.

Até mais.
TÓPICO EDITADO
 
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/08/2009 11:28 hs         
 
Perfeito, matou a charada, então o negócio é fazer mesmo via VBA, se desse para fazer via design usando uma formulinha do excel, seria "mais da hora né" Emoções.
 
Sub x()
    Dim strX As String
    strX = "Sum(A1:A5)"
    ActiveCell.Value = Plan1.Evaluate(strX)
End Sub
 
Grato.
   
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/08/2009 11:55 hs         
Defreitas,
 
Num sei se vc já viu este erro, mas eu preciso do esquema que vc passou para ir somando valores conforme altere contéudo da célula no evento Worksheet_change, mas tá dando este erro:
O método 'Range' do objeto '_Worksheet' falhou
-2147417848

 
   
DeFreitas
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/08/2009 12:37 hs            
Caro amigo,

Ainda preciso lhe explicar uma coisa, só não sei se é isso a causa do erro. Vejamos.

Ao passar uma função para o método Evaluate, você deve se atentar à sintaxe da função, a qual deverá estar em Inglês.

Desse modo, você deverá sempre proceder assim:

* função escrita na planilha (em Português): SOMA(núm1;núm2;...);
* função escrita no método Evaluate (em Inglês): SUM(núm1;núm2;...).

As funções são exatamente as mesmas em ambos os idiomas.

Se você não souber como é o nome de uma função em Inglês, digite-a na planilha, selecione a célula que a contém e use o comando na "Janela Verificação Imediata" (editor do VBA) abaixo:

? ActiveCell.Formula

Até mais.



   
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/08/2009 15:50 hs         
DEFREITAS, meu problema não era com sintaxe, mas sim com a lógica recursividade.
Resolvi com a dica de outro bro virtual, veja:
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim strX As String
   
    If Target.Address = "$D$1" Then
        strX = "Sum(A1:A5)"
       
        '1,3 = A3
        Cells(1, 3).Value = Plan1.Evaluate(strX)
    End If
End Sub
 
E sua dica ali acima, não era o que eu queria, mas é de uma valia enorme, pois eu não sabia este macete de descobrir o nome das funções em inglês, fato que nem sempre nos é trivial, mesmo conhecendo inglês cotidiano e técnico de informática.
 
Muito obrigado.
TÓPICO EDITADO
 
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página