Hola que tal! soy nuevo aqui, asi que no se si esta bien puesto el post aqui o va en otro lado,si no esta bien puesto por favor que algun admin me lo ponga donde debe.

la cosa es la siguiente a ver si alguno me puede ayudar porque me estoy volviendo loco con esto y es lo unico que me falta para poder terminar un programa de vba para trabajar sobre visio.

La cosa esta en que yo tengo varios documentos de visio, con sus shapes y demas.

he hecho un programa que tu le meter un texto y el programa te lo busca y segun la opcion que tu hayas puesto en el formulario(terminado, mal terminado, en ejecucion etc...) el programa te encuentra ese texto en las shapes y te pinta el fondo de varios colores.

Ademas el programa lo que hace es para shapes con mucho texto, te tacha con una linea el texto dentro de esa shape(el que el usuario habia escrito en el formulario ).

Todo eso me funciona correctamente. Ahora bien, tambien tengo otro boton en el Formulario que me busca el texto y me dice en que estado se encuentra esa Shape con ese texto. Tu buscas por ejemplo ana406re por ejemplo y en la Shape que se encuentre te dice segun el color de fondo el estado de ese texto, en ejecucion, terminado, mal terminado etc...

Ahora mi problemon, cuando el texto de mi shape es muy grande, yo tacho el texto de esa shape con el sig codigo:

Dim cadenacomp As Object
Dim formas As Object
Dim celdas as object

Set celdas = pagina.Shapes

For j = 1 To celdas.Count
Set formas = celdas.Item(j)


Set cadenacomp = formas.Characters
cadenacomp.Begin = InStr(formas.Characters, cadena) - 1
cadenacomp.End = cadenacomp.Begin + Len(cadena) + 2
Select Case estado

Case "TERMINADA"
cadenacomp.CharProps(visCharacterColor) = 0
cadenacomp.CharProps(visCharacterOverline) = True

----------------------------------------------------------------------------------------------------------------------------


Mi problema viene cuando quiero comprobar que mi texto(cadenacomp) esta subrayado, no puedo hacer un
if cadenacomp.CharProps(visCharacterOverline) = True por que me da error por que no me devuelve nada, ese procedimiento solo es para decirle al visio que me tache la cadena desde su inicio hasta su final, pero no es una funcion que me devuelva nada.

No se muy bien como que metodo o procedimiento usar para que me devuelva el booleano o me diga el visio que mi cadenacomp esta overline, he probado con muchas y lo que mas se ha acercado ha sido con shape.cellsSRCexists(visSectionCharacter,visRowCha racter,visCharacterOverline) que me devuelve siempre true, no se muy bien como acceder a las propiedades del shape e indicarle que me diga si mi texto en esa Shape en concreto esta overline..

Gracias por la ayuda , estoy desesperado.