Fórum Excel Bácico, Avançado e Vba

Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA...
 
InícioInício  FAQFAQ  BuscarBuscar  MembrosMembros  GruposGrupos  Registrar-seRegistrar-se  Login  

Compartilhe | 
 

 ajuda em vba

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
dapastorello



Mensagens : 4
Data de inscrição : 31/08/2014

MensagemAssunto: ajuda em vba   Dom Ago 31, 2014 4:11 pm

Bom dia... comprei um livre recetemente para tentar me ajudar no trabalho: VBA e Macros: Microsoft Excel 2010.   Contudo nunca fiz curso de programação e estou tendo dificuldades para entender tais códigos e num dos exemplos do livro dá um erro de compilação que nao estou conseguindo desifrar.  Eis o código:
Function IsEmailValid(strEmail As String) As Boolean
Dim strArray As Variant
Dim strItem As Variant
Dim i As Long
Dim c As String
Dim blnIsItValid As Boolean
blnIsItValid = True
'Conte os @ na string.
i = Len(strEmail) - Len(Application.Substitue(strEmail, "@", ""))
'Se houver mais de um @, o e-mail é inválido.
If i <> 1 Then IsEmailValid = False: Exit Function
ReDim strArray(1 To 2)
'As duas linhas seguintes colocam os textos à esquerda e
'à direita do @ em suas próprias variáveis.
strArray(1) = Left(strEmail, InStr(1, strEmail, "@", 1) - 1)
strArray(2) = Application.Substitute(Right(strEmail, Len(strEmail) - _
   Len(strArray(1))), "@", "")
   
For Each strItem In strArray
   'Verifica se há algo na variável.
'Se não houver, então parte do e-mail está faltando.
   If Len(strItem) <= 0 Then
       blnIsItValid = True
       IsEmailValid = blnIsItValid
       Exit Function
   End If
   'Verifica se há apenas caracteres válidos no e-mail
   For i = 1 To Len(strItem)
'Coloca as letras em minúsculos para facilitar a verificação
       c = LCase(Mid(strItem, i, 1))
       If InStr("abcdefghijklmnopqrstuxwyz_-.", c) <= 0 _
           And Not IsNumeric Then
           blnIsItValid = False
           IsEmailValid = blnIsItValid
           Exit Function
       End If
   Next i
'Verifica se o primeiro caractere da esquerda e da direita não é ponto.
   If Left(strItem, 1) = "." Or Right(strItem, 1) = "." Then
       blnIsItValid = False
       IsEmailValid = blnIsItValid
       Exit Function
   End If
Next strItem
'Verifica se há um ponto na parte do endereço que está na direita.
If InStr(strArray(2), ".") <= 0 Then
   blnIsItValid = False
   IsEmailValid = blnIsItValid
   Exit Function
End If
i = Len(strArray(2)) - InStrRev(strArray(2), ".") 'Localiza o ponto
'Verifica se o número de letras corresponde a uma extensão de domínio válida.
If i <> 2 And i <> 3 And i <> 4 Then
   blnIsItValid = False
   IsEmailValid = blnIsItValid
   Exit Function
End If
'Verifica se não há dois pontos juntos no e-mail.
If InStr(strEmail, "..") > 0 Then
   blnIsItValid = False
   IsEmailValid = blnIsItValid
   Exit Function
End If
IsEmailValid = blnIsItValid
End Function
O erro é Erro de compilação: argumento não é opcional e acontece And Not IsNumeric Then (no IsNumeric).  Será que alguém consegue me ajudar?
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: ajuda em vba   Dom Ago 31, 2014 4:17 pm

Bom dia!!

Leia seu livro direito!
Pois o compilador está mostrando que falta o arqumento
Código:
'Coloca as letras em minúsculos para facilitar a verificação
      c = LCase(Mid(strItem, i, 1))
      If InStr("abcdefghijklmnopqrstuxwyz_-.", c) <= 0 _
          And Not IsNumeric(strItem) Then 'Falta o arqumento
          blnIsItValid = False
          IsEmailValid = blnIsItValid
          Exit Function
      End If
  Next i
Leia:http://msdn.microsoft.com/pt-br/library/6cd3f6w1%28v=vs.90%29.aspx

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
dapastorello



Mensagens : 4
Data de inscrição : 31/08/2014

MensagemAssunto: ajuda em vbs   Dom Ago 31, 2014 6:37 pm

Eu olhei várias e várias vezes no livro e código que eu passei está exatamente como está no livro. Primeiro ele dá uma breve nota dizendo o caso que é pra gerenciar uma lista de e-mails. Logo abaixo tem uma mensagem de cuidado dizendo que esse comando é apenas pra verificar se o e-mail é legitimo e não verificando se ele realmente existe. Do mais, o código está exatamente igual ao do livro. Fiz isso mais de uma vez. E o erro persiste.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
dapastorello



Mensagens : 4
Data de inscrição : 31/08/2014

MensagemAssunto: ajuda em vba   Dom Ago 31, 2014 6:48 pm

e mesmo colocando como vc postou:
'Coloca as letras em minúsculos para facilitar a verificação
c = LCase(Mid(strItem, i, 1))
If InStr("abcdefghijklmnopqrstuxwyz_-.", c) <= 0 _
And Not IsNumeric(strItem) Then 'Falta o arqumento
blnIsItValid = False
IsEmailValid = blnIsItValid
Exit Function
End If
Next i

O erro de compilação no VBA parou mas no Excel a fórmula (função) não funciona. Fica #VALOR! uma vez que pelo livro era para aparecer VERDADEIRO ou FALSO.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: ajuda em vba   Seg Set 01, 2014 4:56 pm

Bom dia!!

O erro parou porque foi inserido um argumento, o retorno está
Código:
#VALOR
, porque o argumento está errado ou ha algo que deva mudar em seu código.

Eu não consigo testar com mais profundidade, infelizmente você terá que analisar linha por linha.


Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
dapastorello



Mensagens : 4
Data de inscrição : 31/08/2014

MensagemAssunto: ajuda em vba   Seg Set 01, 2014 5:02 pm

bom dia

Entendi. Mesmo assim, fico grato. Vou tentar encontrar a solução. Depois passarei mais alguns códigos que até agora venho encontrando dificuldade.
Muito Obrigado!!!!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: ajuda em vba   Seg Set 01, 2014 9:27 pm

Boa tarde!!

Com seu arquivo modelo, talvez as minhas tentativas fossem melhores, mas mesmo assim eu não garanto resultado positivo, caso queira mandar um arquivo modelo, poste-o em site gratuito como sendspace cole o link aqui!!

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: ajuda em vba   Hoje à(s) 10:51 pm

Voltar ao Topo Ir em baixo
 
ajuda em vba
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Ajuda Ndrive
» ajuda ajuda kies
» [Ajuda]Como fazer sistema de dinheiro "money"
» [Ajuda] Como faço isso?
» Ajuda com ranks

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: