solo me falta conseguir dos primeros líneas como 'wrapedtext1wrappedtext2'. ¿Es posible?
Sí, podría ser posible, pero no es NO SIMPLE manera de lograrlo. Hay muchos factores que tendrá que considerar.
1) Altura fila píxeles
2) Tipo de fuente y tamaño de
3) Espacio entre líneas
4) se fusiona la célula?
5) es la célula en el estado Autofit
6) ¿Es todo el texto en el modo normal o tiene cualquier cursiva/carácter Negrita/Subrayado (s), etc, etc
Considere esta instantánea
Por ejemplo, alto de fila en píxeles se pueden derivar de
Debug.Print Range("A1").Height * (24/18)
tamaño de fuente en el caso anterior se puede conseguir de esta
Debug.Print Range("A1").Font.Size
Pero el reto es lo que sucedería en el siguiente escenario?
En mi opinión, sería demasiado de un dolor para lograr lo que quiere.La mejor parte sería usar ALT + Enter
para insertar saltos de línea y luego recuperar el texto.
FOLLOWUP
Las cuerdas se introducen en la célula envuelta a través de código VBA. Entonces, ¿cómo se insertarán datos presionando alt + enter? - 1355 hace 4 horas
En este caso, puede adoptar un enfoque similar también.
Sub Sample()
Dim strg As String
strg = "This is a sample" & vbCrLf & _
"sentence which is" & vbCrLf & _
"in Cell A1 and the" & vbCrLf & _
"text is separated" & vbCrLf & _
"with line breaks"
With Range("A1")
.Columns(1).ColumnWidth = 16.86
.Font.Name = "Calibri"
.Font.Size = 11
.Value = strg
End With
End Sub
NOTA: Por lo anterior que tendrá que grabar una macro y ver lo que es el ancho de la fuente, tamaño de fuente y la columna que puede tomar un formato particular. De nuevo, tendrá que considerar el hecho de que el ejemplo que he dado arriba es para una celda no formateada en una hoja nueva. Si está escribiendo en una celda combinada o en una celda por formato, tendrá que cambiar el código anterior en consecuencia, lo cual se puede lograr fácilmente registrando una macro. También estoy asumiendo que el nivel de zoom se establece en 100%
SNAPSHOTS
HTH
Sid
¿Ha intentado agarrar el contenido de esa celda y ver exactamente qué caracteres contiene, imprimiendo códigos ASCII, por ejemplo, usando la función Asc()? Eso puede darte una pista sobre cómo obtener lo que quieres. – JTeagle
@JTeagle: también tengo este problema. Después de establecer la propiedad wrapText en la celda, el contenido de la celda se envuelve automáticamente con el ancho de la columna. Es decir, en realidad no ponemos saltos de línea. Puedo extraer 2 líneas cuando ingresamos datos presionando Alt + Intro.Pero hacer esto es simplemente establecer la propiedad de ajuste de texto en la celda – 1355
@ 1355 - Entiendo. Me temo que puede tener dificultades aquí ya que aunque es probable que pueda obtener el ancho de la celda e incluso la fuente en uso, VBA no (según mi conocimiento) proporciona una forma de 'medir' el texto como sea posible en C++ y posiblemente VB nativo . ¿Puedo preguntar por qué solo necesitas las dos primeras líneas? Dado que el ancho de la celda (y, por lo tanto, la cantidad de ajustes) se puede cambiar fácilmente en el tiempo de ejecución, parece una cosa un tanto arbitraria de hacer. – JTeagle