Página 1 de 1

[RESUELTO] split ???

NotaPublicado: Lun Dic 16, 2013 10:47 pm
por mundoloco
Buenas tardes a todos
Estoy trabajando con un programa en apache calc que me tome nombres y me los separe por nombres y apellidos en diferentes celdas, es de anotar que no todos los nombres son de dos nombres y dos apellidos entonces me puedo encontrar con que hay un nombre con un solo nombre y un apellido o un solo nombre y dos apellidos, Para separar los nombres y apellidos utilizo Split y lógicamente abro una matriz de 4 espacios que van de 0-3 pero, aca radica mi problema que cuando el nombre no ocupa los 4 espacios de la matriz de Split el código de colocación de cada nombre y apellido en cada celda recorre cada uno de los espacios de la matriz y no encuentra valores en el último espacio me saca un error y trato de preguntar primero al último espacio si tiene o no valor con un IF no me deja que hago. Hay les dejo algo de código. Claro que si todos los nombres fueran de 4 frases es decir de 2 apellidos y dos nombres todo funcionaria a la maravilla pero nada es perfecto.
Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****

Sub Main
dim a(3)
dim x as integer, i as integer, y as integer, fin as integer, ss as integer
dim hoj as object, cel as object
dim str as string
x=0:y=0:fin=0
hoj = thiscomponent.sheets(1)
rem cel =hoj.gecellbyposition(x,y)
fin =val(inputbox ("por favor ingresa el nùmero de nombres"))-1

for i=0 to fin
str =hoj.getcellbyposition(0,i).getformula
a()= split(str)
   If a(3)<> "NULL" then rem he intentado si <> NULL si ="" con todo y nada
   ss=ss+1
   else
   a(3)="s"
   end if
hoj.getcellbyposition(1,i).setformula(a(0))
hoj.getcellbyposition(2,i).setformula(a(1))
hoj.getcellbyposition(3,i).setformula(a(2))
hoj.getcellbyposition(4,i).setformula(a(3)) rem si el nombre solo tiene tres palabras aca me muestra el error
next
msgbox ("todo esta consumado")
End Sub

Re: split ???

NotaPublicado: Lun Dic 16, 2013 11:49 pm
por mauricio
Usa
Código: Seleccionar todo   Expandir vistaContraer vista
UBound(matriz)

para conocer el limite superior de tu matriz...

Saludos

Re: split ???

NotaPublicado: Mar Dic 17, 2013 12:45 am
por FJCC-ES
Otro método:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub Main2
'dim a(3)
dim b(0)
dim x as integer, i as integer, y as integer, fin as integer, ss as integer
dim hoj as object, cel as object
dim str as string
x=0:y=0:fin=0
hoj = thiscomponent.sheets(1)
rem cel =hoj.gecellbyposition(x,y)
fin =val(inputbox ("por favor ingresa el nùmero de nombres"))-1

for i=0 to fin
   str =hoj.getcellbyposition(0,i).getString
   a()= split(str)
   range = hoj.getCellrangeByPosition(1,i,UBOUND(a) + 1, i)
   b(0) = a
   range.DataArray = b 'DataArray es una matriz de matrices
next
msgbox ("todo esta consumado")
End Sub

Re: split ???

NotaPublicado: Mié Dic 18, 2013 2:35 am
por mundoloco
Para mis amigos MAURICIO Y FJCC-ES gracias por sus aportes, ya introduje sus sugerencias a mi codigo y efectivamente era la solución aunque iva acompañado de otra función importante para poder que me funcionara esta función era la trim$ y una serie de preparaciones de los nombres que he estado implementando en el código para sistematizar es proceso que es bueno. gracias CHICOS y buena por esa.