Notifications
Clear all

erro de código - função não existente?

6 Posts
2 Usuários
0 Reactions
1,434 Visualizações
(@paulovitor)
Posts: 29
Eminent Member
Topic starter
 

pessoal, estou tentando aprender vba com o livro do richard shepherd, mas ele é de 2004 (o português traduzido, o original pode ser ainda mais antigo).

então, num código simples, está retornando um erro.

Private Sub Workbook_NewSheet(ByVal Sh As Object)
   ' MsgBox "Hello Word"
    x = Multiply(3, 5)
    MsgBox x
    Call Display("my subroutine")
End Sub

aparece 'Sub' ou 'Function' não definida"

e a palavra Multiplay é destacada. pesquisando, não achei nada sobre esse multiply. poderia ser uma palavra reservada que o excel não usa mais e portanto está em desuso?
estou no excel 2013.

 
Postado : 04/04/2016 2:22 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Use assim:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
' MsgBox "Hello Word"
x = 3 * 5
MsgBox x
Call Display("my subroutine")
End Sub

E digo mais, se não tiver uma Sub Display() em algum lugar, vai dar que não encontra a rotina Display...

p.s.: Esse multiply é uma função de planilha, que não existe no VBA. O cara se equivocou na hora de escrever o livro e não testou o código dele mesmo !

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/04/2016 2:43 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Paulo, a palavra Multiplay é destacada pelo fato de estarmos fazendo referencia a uma Function que não existe, e no livro é citado para se criar antes.

fernando, na verdade o cara não se equivocou ao fazer referencia a função "Multiply", não sei como está descrito no livro em portugues, mas o original em inglês um dos exercícios é criar esta função e a rotina Display antes de executar rotina que ele citou no Evento que adiciona uma nova planilha :

Writing a Simple Function
The object of this exercise is to create a function to accept two numbers and multiply them together
and return the result. The function will have the name Multiply. The following table cites the four
main mathematical operators that you will use when writing functions and subroutines in VBA.

'The code for this function is as follows:
Function Multiply(a, b)
    Multiply = a * b
End Function

E quanto a "Sub Display" tambem está no capitulo :
Writing a Simple Subroutine
A subroutine is different from a function in that it does not return anything directly and so cannot be
used directly in the spreadsheet the way a function can. A subroutine . . .

'Click back to Module1 and add the following code:
Sub Display(target)
    MsgBox target
End Sub

O livro em questão em ingles está no link abaixo se quiserem dar uma olhada:
Excel VBA Macro Programming
by Richard Shepherd ISBN:0072231440
McGraw-Hill/Osborne © 2004 (319 pages)
This unique book presents sample code for more than twenty practical, high-powered Excel
VBA macro applications. You get all the essentials of VBA, then explore ways to power Excel
with VBA.
http://dbmanagement.info/Microsoft/1507 ... l_2016.pdf

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/04/2016 7:32 pm
(@paulovitor)
Posts: 29
Eminent Member
Topic starter
 

Escrevendo uma sub-rotina simples está no livro, mas a parte de escrever uma função não, nada.

É triste essas traduções incompletas e mal feitas.

criando a função antes, funcionou. obrigado.

 
Postado : 05/04/2016 1:29 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Escrevendo uma sub-rotina simples está no livro, mas a parte de escrever uma função não, nada.

É triste essas traduções incompletas e mal feitas.

criando a função antes, funcionou. obrigado.

Estranho mesmo, traduzir um livro e deixar partes importantes, pelo menos na questão que citou se não tiver a parte de criar a function tetá erros, melhor baixar o pdf que indiquei e estudar por ele.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/04/2016 9:42 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

fernando, na verdade o cara não se equivocou ao fazer referencia a função "Multiply", não sei como está descrito no livro em portugues, mas o original em inglês um dos exercícios é criar esta função e a rotina Display antes de executar rotina que ele citou no Evento que adiciona uma nova planilha :

kkkk ou isso ! Pelo visto exatamente isso.
Valeu por esclarecer Mauro

Em tempo, eu me referia a MULT().

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/04/2016 9:53 am