Usuário com melhor resposta
Por que minha função não aceita End If?

Pergunta
-
A função a seguir, recebe uma palavra e retira tudo o que não for número ou vírgula. No entanto, o primeiro If termina com GoTo e não exige "EndIf" e, o segundo If, dentro do For, também não exige End If sem motivo, por que o programa dá erro quando coloco End If?
' VERIFICA QUAIS PALAVRAS REFEREM-SE A NÚMEROS E RETIRA COLCHETES, HÍFENS, ETC Function GetNum(Phrase As String) As String ' DECLARAÇÕES Dim Temp As String Dim caractere As Long On Error GoTo EndFunc ' OBTÉM OS NÚMEROS Temp = "" If InStr(1, Phrase, "º") Then GoTo EndFunc 'se houver o símbolo de graus, então nada é retornado For caractere = 1 To Len(Phrase) 'para cada caractere da palavra, se ele for numérico If (IsNumeric(Mid(Phrase, caractere, 1))) = True Or Mid(Phrase, caractere, 1) = "," Then _ Temp = Temp & Mid(Phrase, caractere, 1) 'então é adicionado à variável temporária Next caractere If Len(Temp) = 0 Then 'se, no final da avaliação, não houver nada numérico GetNum = "" 'então nada é retornado Else 'do contrário, a função retorna os números naquela palavra GetNum = Temp End If EndFunc: GetNum = Temp End Function
Respostas
-
A quetão é: toda vez que o "if" é resolvido dentro de uma linha, não precisa de end if.
Ja se ele for resolvido em mais de uma linha, ai sempre precisará. Independente do que faz o bloco de codigo dentro do If.
Caio Vitullo- Marcado como Resposta Marlon Saveri sexta-feira, 11 de março de 2011 15:39
Todas as Respostas
-
-
-
Obrigado.
Então, funcionar funciona, mas não deveria, pois os dois primeiros "If" não possuem "End If".
Por exemplo, este meu outro código:
If existencia = True And novacolunal = False Then Exit Sub
também funciona normalmente apesar de não escrever End If.
Daí pensei: "Quando tem Exit Sub não precisa de End If?!" O que também não faz sentido, pois se eu utilizasse:
If existencia = True And novacoluna = False Then
msgbox existencia & novacoluna
Exit Sub
a função não compilaria, exigindo End If.
-
A quetão é: toda vez que o "if" é resolvido dentro de uma linha, não precisa de end if.
Ja se ele for resolvido em mais de uma linha, ai sempre precisará. Independente do que faz o bloco de codigo dentro do If.
Caio Vitullo- Marcado como Resposta Marlon Saveri sexta-feira, 11 de março de 2011 15:39