Fórum Excel Bácico, Avançado e Vba
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
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  Últimas imagensÚltimas imagens  ProcurarProcurar  RegistarRegistar  Entrar  

 

 ajuda em vba

Ir para baixo 
2 participantes
AutorMensagem
dapastorello




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

ajuda em vba Empty
MensagemAssunto: ajuda em vba   ajuda em vba EmptyDom 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?
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


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

ajuda em vba Empty
MensagemAssunto: Re: ajuda em vba   ajuda em vba EmptyDom 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
Ir para o topo Ir para baixo
dapastorello




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

ajuda em vba Empty
MensagemAssunto: ajuda em vbs   ajuda em vba EmptyDom 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.
Ir para o topo Ir para baixo
dapastorello




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

ajuda em vba Empty
MensagemAssunto: ajuda em vba   ajuda em vba EmptyDom 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.
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


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

ajuda em vba Empty
MensagemAssunto: Re: ajuda em vba   ajuda em vba EmptySeg 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
Ir para o topo Ir para baixo
dapastorello




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

ajuda em vba Empty
MensagemAssunto: ajuda em vba   ajuda em vba EmptySeg 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!!!!
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


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

ajuda em vba Empty
MensagemAssunto: Re: ajuda em vba   ajuda em vba EmptySeg 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
Ir para o topo Ir para baixo
Conteúdo patrocinado





ajuda em vba Empty
MensagemAssunto: Re: ajuda em vba   ajuda em vba Empty

Ir para o topo Ir para baixo
 
ajuda em vba
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Ajuda com VBA
» Proteger Planilha
» ajuda urgente !!
» Ajuda urgente
» Ajuda com Macro

Permissões neste sub-fórumNão podes responder a tópicos
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: