Programación General > VBA
Problema con Strings (o eso creo)
(1/1)
Cormac:
Hola,
estoy escribiendo una aplicación en VBA usando el IDE de Visual Basic incorporado en el AutoCAD 2009, y en uno de los procedimientos el compilador me informa del siguiente error:
--- Citar ---Error de compilación:
Calificador no válido
--- Fin de la cita ---
referido al parámetro cadena de tipo String. El código del procedimiento es el siguiente :
--- Código: Visual Basic ---Private Sub extraeInfo(color As String, seccion As String, cadena As String) Dim i As Integer i = 0 Do While cadena.Chars(i) <> Chr(32) And cadena.Chars(i) <> vbTab i = i + 1 Loop color = Left(cadena, i) Do While cadena.Chars(i) = Chr(32) Or cadena.Chars(i) = vbTab i = i + 1 Loop seccion = Mid(cadena, i, Len(cadena) - i - 1) End Sub
En concreto el error se produce en la primera utilización del parámetro cadena, justo en la linea del primer Do. Creo que el fallo está en algo que no alcanzo a comprender sobre la manipulación de Strings y su paso como parámetros, puesto que no es el primer caso en que el compilador me reporta ese mismo error:
--- Código: Visual Basic ---Public Sub cargaTramos(tramos As String) Dim sup As Integer Dim inf As Integer inf = 0 sup = 0 For sup = 0 To tramos.Length - 1 If tramos(sup) = vbCr Then insertaTramo tramos.Substring(inf, sup - inf) cont_tr = cont_tr + 1 inf = sup + 1 End If Next sup insertaTramo tramos.Substring(inf, sup - inf + 1) End Sub
Aquí obtengo el mismo mensaje de error, sólo que referido a la primera utilización del parámetro tramos (For sup = 0 To tramos.Length - 1). Parece que se da exactamente la misma situación, pero como soy programador novato y autodidacta de Visual Basic no soy capaz de dar con la solución :ouch:
Gracias por adelantado y un saludo.
F_Tanori:
En VB / VBA String es un tipo de dato, no una clase como lo estas suponiendo
Esto no se hace en VB
--- Código: Text ---cadena.Chars(i)
debes usar una funcion ejemplo
--- Código: Visual Basic ---mid(cadena,i,1)
--- Código: Text ---tramos.Substring(inf, sup - inf)
--- Código: Visual Basic ---tramos=mid(tramos(inf, sup - inf))
Esto no se hace en VB
--- Código: Text ---tramos.Length
debes usar una funcion ejemplo
--- Código: Visual Basic ---len(tramos)
etc
Saludos
Cormac:
gracias por la aclaración, ahora mi aplicación va perfecta :)
Navegación
Ir a la versión completa