Hola Xyon:
Primero te explico la segunda pregunta, ya que es IMPRESCINDIBLE que entiendas perfectamente el With y el funcionamiento de la rutina para que puedas corregirla en el futuro.
Código vb:
Ver original' -- Bucle para Exportar los datos
With FlexGrid
For Fila = 0 To .Rows - 1
For Columna = 0 To .Cols - 1
o_Hoja.Cells(Fila + 1, Columna + 1).Value = .TextMatrix(Fila, Columna)
Next
Next
End With
El With se emplea para simplificar el proceso de escritura o sea que en este ejemplo, lo escrito arriba es lo mismo que esto:
Código vb:
Ver original' -- Bucle para Exportar los datos
For Fila = 0 To FlexGrid.Rows - 1
For Columna = 0 To FlexGrid.Cols - 1
o_Hoja.Cells(Fila + 1, Columna + 1).Value = FlexGrid.TextMatrix(Fila, Columna)
Next
Next
Perdona si te explico algo que tu ya sabes, pero me conoces y sabes que mi única intención es que se comprenda mi explicación.
En este caso evidentemente debe utilizarse un bucle For que recorra todas las filas y dentro de este un bucle anidado For que recorra todas las columnas de cada fila y esto es porque estamos procesando un control FlexGrid que es algo muy similar a una Hoja de Cálculo, la unica diferencia esta en que el FlexGrid empieza en Fila 0 y Columna 0 y la Hoja de Excel en Fila 1 Columna 1 por esto el hecho de sumar 1 a Fila y Columna de la Hoja con el fin de que 0,0 del FlexGrid se convierta en 1,1 de la Hoja.
Por esto, no tiene sentido tu pregunta de como hacerlo cuando se trata de un TextBox o un ComboBox ya que en este caso tan sólo tienes que indicar en que Fila y Columna de la Hoja Excel quieres el dato y esto evidentemente no puede formar parte de un bucle ya que no tiene razon de ser.
Estas indicando en tu ejemplo
o_Hoja.Cells=cTextbox1 y esto te provocaría un error ya que debes indicarle Fila y Columna donde quieres que vaya el valor del cTextBox1 por ejemplo
o_Hoja.Cells(1,5)=cTextbox1 'Fila 1 Columna 5 o realmente Columna E en Excel, aunque debes indicarle el 5, no vale la E)
Espero que se entienda clara mi explicación.
Respecto la otra pregunta seguramente se trata de un problema en el formato de los datos en Excel ya que por lo que veo casi toda la columna son HORAS y tal vez sea un problema del formato automático que excel aplica según los datos recibidos.
Comprueba si cuando entras en Excel sobre una celda de las que indicas estas viendo en la barra de formulas el numero real o ves el 0:00:00
De todos modos, haz por otra parte la prueba de quitar el .Value en la siguiente sentencia a ver que pasa, si funciona te explico el porque ya que es un poco de intuición y te daré un consejo para mejorar la rutina de exportación del FlexGrid a Excel.
o_Hoja.Cells(Fila + 1, Columna + 1)
.Value = FlexGrid.TextMatrix(Fila, Columna)
Saludos