vilmarbr
|
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.
|
|
|
|
|
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
|
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é" . Sub x() Dim strX As String strX = "Sum(A1:A5)" ActiveCell.Value = Plan1.Evaluate(strX) End Sub Grato.
|
|
|
vilmarbr
|
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
|
|
|
|
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
|
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
|
|
|
|
|