Tengo la secuencia "ololo123". Necesito obtener la posición del primer dígito - 1. ¿Cómo establecer la máscara de búsqueda?VBA. Cómo encontrar la posición del primer dígito en la cadena
Respuesta
Algo como esto debe hacer el truco para usted:
Public Function GetPositionOfFirstNumericCharacter(ByVal s As String) As Integer
For i = 1 To Len(s)
Dim currentCharacter As String
currentCharacter = Mid(s, i, 1)
If IsNumeric(currentCharacter) = True Then
GetPositionOfFirstNumericCharacter = i
Exit Function
End If
Next i
End Function
entonces le puede llamar así:
Dim iPosition as Integer
iPosition = GetPositionOfFirstNumericCharacter("ololo123")
Puede simplificar la función. Realmente no necesitas 'currentCharacter'; su prueba podría ser 'If IsNumeric (Mid (s, i, 1)) Then ...' – e100
@ e100 - muy cierto. Romperlo lo hace más legible y para eso estoy cuando contesto una pregunta de este nivel de complejidad, ya que trabajo sobre la base de que el OP puede necesitar un código más simple/claro para ayudar a la comprensión =) – Rob
Si la velocidad es un problema, esto va a correr un poco más rápido que roba (noi Rob):
Public Sub Example()
Const myString As String = "ololo123"
Dim position As Long
position = GetFirstNumeric(myString)
If position > 0 Then
MsgBox "Found numeric at postion " & position & "."
Else
MsgBox "Numeric not found."
End If
End Sub
Public Function GetFirstNumeric(ByVal value As String) As Long
Dim i As Long
Dim bytValue() As Byte
Dim lngRtnVal As Long
bytValue = value
For i = 0 To UBound(bytValue) Step 2
Select Case bytValue(i)
Case vbKey0 To vbKey9
If bytValue(i + 1) = 0 Then
lngRtnVal = (i \ 2) + 1
Exit For
End If
End Select
Next
GetFirstNumeric = lngRtnVal
End Function
Podrías probar con Regex, y entonces tendrías dos problemas. Mi VBAfu no es hasta el tabaco, pero voy a darle una oportunidad:
Function FirstDigit(strData As String) As Integer
Dim RE As Object REMatches As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "[0-9]"
End With
Set REMatches = RE.Execute(strData)
FirstDigit = REMatches(0).FirstIndex
End Function
A continuación, sólo lo llaman con FirstDigit("ololo123")
.
+1 Veo que tuvimos similares pensamientos, ¡fuiste un poco más rápido! –
seguro de su entorno, pero esta trabajado en Excel 2010
'Added reference for Microsoft VBScript Regular Expressions 5.5
Const myString As String = "ololo123"
Dim regex As New RegExp
Dim regmatch As MatchCollection
regex.Pattern = "\d"
Set regmatch = regex.Execute(myString)
MsgBox (regmatch.Item(0).FirstIndex) ' Outputs 5
en realidad tienen esa función:
Public Function GetNumericPosition(ByVal s As String) As Integer
Dim result As Integer
Dim i As Integer
Dim ii As Integer
result = -1
ii = Len(s)
For i = 1 To ii
If IsNumeric(Mid$(s, i, 1)) Then
result = i
Exit For
End If
Next
GetNumericPosition = result
End Function
Aquí es un método ligero y rápido que evita adiciones expresiones regulares/de referencia, lo que ayuda con los gastos generales y transportabilidad en caso de que sea una ventaja.
Public Function GetNumLoc(xValue As String) As Integer
For GetNumLoc = 1 To Len(xValue)
If Mid(xValue, GetNumLoc, 1) Like "#" Then Exit Function
Next
GetNumLoc = 0
End Function
- 1. Recuperando el primer dígito de un número
- 2. Cómo encontrar la posición del cursor en un JTextArea
- 3. ¿Cómo encontrar la posición del cursor en una DIV contenteditable?
- 4. encontrar la posición de una subcadena en una cadena
- 5. VBA Powerpoint. ¿Cómo obtener la ruta del directorio actual del archivo a una cadena en VBA?
- 6. Encontrar la posición del elemento máximo
- 7. Encontrar la posición del texto del cursor en JTextField
- 8. Cómo encontrar la posición absoluta del clic mientras se amplía
- 9. ¿Cómo encontrar la posición global del cursor de texto?
- 10. Encontrar la posición del cursor en un cuadro de texto
- 11. cómo encontrar n ° dígito en un número como 1491625 ....?
- 12. ¿Cómo encontrar la opción de seleccionar posición?
- 13. Cómo encontrar la diferencia entre las fechas en VBA
- 14. Cómo verificar el último dígito del número
- 15. Insertar cadena en la posición del cursor de UITextField
- 16. encontrar la posición del elemento relativa al documento
- 17. Encontrar la definición en inglés de una palabra en VBA
- 18. Encontrar el primer día del calendario
- 19. ¿Cómo establecer la posición en el giro?
- 20. ¿Cómo detener la ejecución del código VBA?
- 21. ¿Cómo encontrar la posición de intercalación en un NSTextView?
- 22. ¿Cómo encontrar la posición de traducción actual en Canvas?
- 23. ¿Cómo establecer la posición del diálogo?
- 24. Insertar cadena en la posición especificada
- 25. Inserción de cadena en la posición x de otra cadena
- 26. VBA para convertir la cadena Fecha
- 27. Encontrar la posición de un elemento en una matriz sencilla
- 28. Reemplazo basado en la posición en la cadena
- 29. Cómo obtener la posición del cursor en un Edittext
- 30. Encontrar la coincidencia de la cadena parcial
@Remou gracias, borré la observación. – Fosco