Hola comunidad.
Agradecería mucho vuestra ayuda con el siguiente problema:
Hice una macro para copiar el contenido de 14 celdas, dispuestas en 1 fila y 14 columnas, y los copia en la última fila vacía de otra hoja del proyecto. Esto funciona bien.
Pero resulta que al almacenar los datos de estas 14 celdas en una variable tipo objeto (en la macro), le da a todas las celdas un formato texto. Eso está bien en algunas celdas. Pero hay otras que necesito que estén, por ejemplo en formato número de tipo entero sin decimales o fecha de tipo 22/05/1994.
En resumen necesito ayuda para programar la macro de modo tal que, al copiar todo los valores celda por celda le vaya dando a cada una el formato adecuado. Es me ahorraría mucho tiempo de post-procesamiento de la celdas.
Les dejo el el scrip aquí debajo
REM ***** BASIC *****
Sub CopiarDatos()
Dim oDoc As Object
Dim oOrigen As Object
Dim oDestino As Object
Dim oHojaOrigen As Object
Dim oHojaDestino As Object
Dim i As Long
Dim uf As Long
oDoc = ThisComponent
oHojaOrigen = oDoc.Sheets.getByName("Campos")
oOrigen = ThisComponent.Sheets.getByName("Campos").getCellRangeByName("M2:AA2")
oHojaDestino = oDoc.Sheets.getByName("Registro Histórico")
' Encuentra la última fila no vacía en la HojaDestino
uf = oHojaDestino.Rows.Count-800000 '1048570 (La variable uf indica la cantidad de filas de la hoja y se le resta esta cantidad para que no tenga que recorrer tantas filas vacias)
Do While oHojaDestino.getCellByPosition(0, uf).getString() = ""
uf = uf - 1
Loop
' Copia los datos desde la HojaOrigen a la última fila vacía en la HojaDestino
For i = 0 To 14 ' Asumiendo que hay 14 columnas de datos
oHojaDestino.getCellByPosition(i, uf + 1).setString(oOrigen.getCellByPosition(i, 0).getString())
'Estuve pensando en dar formato utilizando un if
'if i = 0 Then
'oHojaDestino.getCellByPosition(i, uf + 1). Pero desconozco la sintaxis de esta linea
'End if
'if i = 9 Then
'oHojaDestino.getCellByPosition(i, uf + 1). igual aquí
'End if
Next i
End Sub
Desde ya, muchas gracias.