Salto de línea en VBA

Resuelto
lefort32 -  
 lefort32 -
Hola,

Soy un gran principiante en VB, de quien he aprendido los grandes principios básicos. Me gustaría crear una función para realizar un salto de línea automático cada vez que aparezca un carácter específico, en este caso "/" en una celda.

Es decir, cada vez que haya un / en una celda, me gustaría que se realizara un salto de línea.

Ve algo así como usar Chr(10) y la función Replace, pero no sé cómo combinar ambos. ¿Es posible?

¡Gracias de antemano por cualquier sugerencia!

Configuración: Windows / Chrome 54.0.2840.71

3 respuestas

  1. Usuario anónimo
     
    Hola lefort32,

    Para la función, te propongo este código VBA:

     Option Explicit Function SlashCar10(chn As String) As String SlashCar10 = WorksheetFunction.Substitute(chn, "/", Chr$(10)) End Function 

    He probado este código y funciona perfectamente: si tienes un texto en A1
    con barras ( / ), y pones en B1 : =SlashCar10(A1)
    el texto en B1 será efectivamente el de A1 con Chr$(10) en lugar
    de barras; ¡SIN EMBARGO, NO ES SUFICIENTE! De hecho, esto sólo
    funcionará SI el formato de la celda DESTINATARIA
    está configurado con: ☑ Ajustar texto automáticamente (ver la ventana
    « Formato de celda », pestaña « Alineación », cuadro « Control
    de texto »).

    Sí existe esta instrucción VBA que lo hace automáticamente:
    ActiveCell.WrapText = True
    PERO esta instrucción, que modifica una celda, no se puede
    ejecutar SINO en una Sub, ¡y NO en una Function!

    Por lo tanto, es imposible hacer algo mejor, a menos que ABANDONES
    la idea de usar una función.

    Pero si puedes sin problema poner de antemano el formato adecuado
    en todas las celdas destinarias, ¡entonces el problema estará resuelto!

    Si es así, gracias por indicarlo, para que el tema pueda ser cerrado.

    Saludos. 😊
    0
    1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
       
      No creo que haya problemas para hacer wraptext en una función. Ejemplo :
      Function test() Columns("A:A").WrapText = True End Function
      0
      1. Usuario anónimo > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
         
        Hola yg_be,
        Si tienes razón, ¡entonces bravo! Pero a mí me rechazó
        hacerlo para una sola celda. Saludos. 😊
        0