Notifications
Clear all

obter numero

4 Posts
2 Usuários
0 Reactions
776 Visualizações
(@vaggnersf)
Posts: 34
Eminent Member
Topic starter
 

Tenho esse comando abaixo que uso para obter o numero de um texto. Mais ele esta limitando o meu serviço, caso o numero passe de 9 dígitos ele não captura mais e da à mensagem de #VALOR. Precisava que ele obtece a quantidade exata que tem no texto e também aceitasse quando o numero tiver barra ou traço.

Function OBTERNF(s As String) As Long
    Dim lChar As Long
    Dim sChar As String
    Dim sTemp As String
    
    For lChar = 1 To Len(s)
        sChar = Mid(s, lChar, 1)
        Select Case sChar
            Case "0" To "9"
                sTemp = sTemp & sChar
            Case Else
                If Len(sTemp) > 0 Then Exit For
        End Select
    Next lChar
    
    If Len(sTemp) > 0 Then
        OBTERNF = CLng(sTemp)
    End If
                
End Function
 
Postado : 04/03/2013 7:17 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente e veja se atende

Function SoNum(Cell As Range) As String
    Dim Ret_Texto As Long
    For Ret_Texto = 1 To Len(Cell)
        Select Case Asc(Mid(Cell, Ret_Texto, 1))
'se for espaço
        Case 32
            SoNum = SoNum & Mid(Cell, Ret_Texto, 1)
'se for -
        Case 45
            SoNum = SoNum & Mid(Cell, Ret_Texto, 1)
'se for /
        Case 47
            SoNum = SoNum & Mid(Cell, Ret_Texto, 1)
'se for numeros
        Case 48 To 57
            SoNum = SoNum & Mid(Cell, Ret_Texto, 1)
        End Select
    Next
End Function

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

 
Postado : 04/03/2013 9:00 am
(@vaggnersf)
Posts: 34
Eminent Member
Topic starter
 

Obrigado pela ajuda, apenas para finalizar o código como faço para o código não deixar nenhum espaço a esquerda porque ele esta adicionando espaços a esquerda.
É que depois vou classificar esses números por onde numérica e se tiver espaço ele bagunça minha classificação.

 
Postado : 04/03/2013 11:29 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Retire do codigo as linhas:
'se for espaço
Case 32
SoNum = SoNum & Mid(Cell, Ret_Texto, 1)

porem devo salientar, que incluindo na extração "/" e "-", os "numeros" podem adquirir configuração de texto, então sua ordem podera ficar "estranha" mesmo.

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

 
Postado : 04/03/2013 11:41 am