Página 1 de 1

[RESUELTO] macro distinguir texto o numero en una celda

Publicado: Lun Ago 06, 2018 8:25 pm
por userpepe
Hola a tod@s;

Estoy aprendiendo esto de las macros y me gustaria conseguir que mi macro analizase si el contenido de una columna es texto o numero y según eso copie el contenido de cadacelda de esa columna en otra. Si es texto en la columna 2 y si es número, que lo copie en la columna 4.

Código: Seleccionar todo

Option Explicit


Sub CONTABILIDAD()
Dim oHoja As Object
Dim oRango As Object
Dim oCol As Object
Dim oCell As Object
Dim a As integer

    
	oHoja = ThisComponent.getCurrentController.getActiveSheet()

	oRango = ThisComponent.getCurrentSelection()
	
	oCol = oRango.getColumns.getByIndex(0)

	
	ThisComponent.getCurrentController.select(oCol)

    a = 0
      oCol = oRango.getColumns.getByIndex(0)
      oCell = oRango.getCellByPosition(0,a)     ' selecciona A1 (primer numero = columna, segundo numero = fila)

	
		For a = 0 to a = 1000
	'	MsgBox oCell.getType() '0: Vacia - 1: Número - 2: Texto - 3: Fórmula
     		If oCell.getType = 2 Then
         		 oRango.copyRange(oRango.getCellByPosition(2,a),oCell.String)
            Else
                oRango.copyRange(oRango.getCellByPosition(4,a),oCell.Value)
            End If
        Next a
     
End Sub 
Os agradezco de antemano vuestro tiempo por si podéis echarme una mano

Re: macro distinguir texto o numero en una celda

Publicado: Lun Ago 06, 2018 8:26 pm
por userpepe
El problema es que no funciona el codigo que he puesto ahí arriba y no se suficiente para saber por que motivo no funciona.

Re: macro distinguir texto o numero en una celda

Publicado: Mar Ago 07, 2018 1:21 am
por FJCC-ES
No entiendo exactamente que quiere hacer con la macro. Esta macro copia las celdas A1:A1001. Si la celda contiene texto, la copia a la columna C. Celdas de otros tipos se copian a la columna E.

Código: Seleccionar todo

   oHoja = ThisComponent.getCurrentController.getActiveSheet()

For a = 0 to 1000 
   '   MsgBox oCell.getType() '0: Vacia - 1: Número - 2: Texto - 3: Fórmula
     oCell = oHoja.getCellByPosition(0,a)
     If oCell.getType = 2 Then
           oHoja.copyRange(oHoja.getCellByPosition(2,a).CellAddress,oCell.RangeAddress)
     Else
           oHoja.copyRange(oHoja.getCellByPosition(4,a).CellAddress,oCell.RangeAddress)
     End If
Next a

Re: macro distinguir texto o numero en una celda

Publicado: Mar Ago 07, 2018 7:46 am
por userpepe
Buenos días FJCC-ES por responder tan rápido.

Exactamente eso que dices es lo que quiero que haga la macro, copiar las celdas en una columna u otra según si es texto o no. pero al ejecutarla me da un error (Type: com.sun.star.lang.IndexOutOfBoundsException - Message: .) y no se por qué.

Re: macro distinguir texto o numero en una celda

Publicado: Mar Ago 07, 2018 4:58 pm
por FJCC-ES
El archivo adjunto contiene la macro y no me da un error.

Re: macro distinguir texto o numero en una celda

Publicado: Mar Ago 07, 2018 6:36 pm
por userpepe
Muchas Gracias FJCC-ES, he aplicado la macro que me mandas en el archivo y funciona perfectamente.
Compararé con la mia a ver donde estan los errores.

Un saludo