Amigo me tome la libertad de hacer algunos cambios a tu codigo, yo personalmente prefiero trabajar con las coordenadas de las hojas...
Es decir hago referencia a Filas y columnas de una hoja excel y utilizo una funcion para transformar los numeros de filas y columnas a formato letranumero.
Ejemplo : Fila=1, Columna=1 hace referencia A1.
Bueno aqui esta el codigo te agrege dos funciones...
Código Delphi
[-]
Function ExcelColToChar(Index : Integer) : String;
Begin
If Index < 1 then
Result:='A'
Else
Begin
If Index > 702 Then
Result:='ZZ'
Else
Begin
If Index > 26 Then
Begin
If (Index Mod 26)=0 Then
Result:=Chr(64 + (Index Div 26)-1)
Else
Result:=Chr(64 + (Index Div 26));
If (Index Mod 26)=0 Then
Result:=Result+Chr(64+26)
Else
Result:=Result+Chr(64 + (Index Mod 26));
End
Else
Result:=Chr(64 + Index);
End;
End;
End;
Function ExcelSetRange(Row1, Col1, Row2, Col2:Integer):String;
Begin
Result:=Format('%s%d:%s%d',[ExcelColToChar(Col1),Row1,ExcelColToChar(Col2),Row2 ]);
End;
...
Var
Value:Variant;
begin
c:=X+fila;
A:=ExcelSetRange(C,1,C,1);
B:=ExcelSetRange(C,2,C,2);
strFormula:=Format('=ISTEXT(%s)',[ExcelSetRange(c,1,c,1)]) ;
F1:=ExcelSetRange(1,6,1,6);
oXLS.Range[F1].Select;
oXLS.Selection.ClearContents;
oXLS.Range[F1].Formula:=strFormula;
Value:=oXLS.Range[F1].select;
if ((VarType(Value)=varBoolean) And (Value))Then
oXLS.Range[b].Value:='0';
Showmessage(ToString(oXLS.Range[b]));
ListaInserta.Items.Add(ToString(oXLS.Range[b]));
oXLS.Range[A].copy;
NombrePieza.Items.Add(ToString(oXLS.Range[A]));
En negrita los cambios que me tome la libertad de modificar...
Nota: Eso de urgente en los titulos de los post, aqui no corre lee la
guia de estilo...
Saludos cordiales