Hola.
Por el programa que estoy haciendo necesite resolver el problema de ubicar en la columna X un dato, luego incrementar dicha columna X
para el proximo dato y asi sucesivamente. Logré esto. Si hay una solución mas simple bienvenido sea:
La ultima columna del excel es la "IV" y no puede superar dicha columna, en ese caso de superar devuelve el valor NIL
Por el programa que estoy haciendo necesite resolver el problema de ubicar en la columna X un dato, luego incrementar dicha columna X
para el proximo dato y asi sucesivamente. Logré esto. Si hay una solución mas simple bienvenido sea:
#include "fivewin.ch"
//------------------------------------------------------------------------------
FUNCTION main()
? NuevoNumeroCelda("iv", 1)
RETURN (NIL)
//------------------------------------------------------------------------------
FUNCTION LaUltima(cCeldaAux, nIncremento)
LOCAL nItem,;
cLetra,;
lContiene:= .f.
DEFAULT nIncremento:= 1
FOR nItem := Len(cCeldaAux) TO 1 STEP -1
IF (SubStr(cCeldaAux, nItem, 1) == "Z")
cCeldaAux:= LaUltima(SubStr(cCeldaAux, 1, Len(cCeldaAux)-1))
lContiene:= .T.
EXIT
ELSE
cLetra:= chr(Asc(SubStr(cCeldaAux, Len(cCeldaAux), 1)) + nIncremento)
cCeldaAux:=SubStr(cCeldaAux, 1, Len(cCeldaAux)-1) + cLetra
EXIT
ENDIF
NEXT nItem
IF lContiene
cCeldaAux:= cCeldaAux + "A"
ENDIF
IF Len(cCeldaAux) > 2
cCeldaAux:= NIL
ENDIF
RETURN (cCeldaAux)
//------------------------------------------------------------------------------
FUNCTION NuevoNumeroCelda(cCelda, nIncremento)
cCelda:= LaUltima(Upper(cCelda), nIncremento)
//Verifica que no sea la ultima columna soportada por excel
IF (Asc(SubStr(ccelda,1,1)) > 72) .and. (Asc(SubStr(cCelda, 2,1)) > 86)
cCelda:= NIL
ENDIF
RETURN (cCelda)
//------------------------------------------------------------------------------La ultima columna del excel es la "IV" y no puede superar dicha columna, en ese caso de superar devuelve el valor NIL