PDA

Ver la Versión Completa : Delphi a Excel: Celda Activa


ainclanmx
01-03-2005, 22:38:34
Saludos

Estoy haciendo una aplicación que pasa el contenido de un grid a excel. Todo funciona muy bien (gracias a la ayuda del foro), Pero no he podido encontrar como hacer que cuando se pone un valor a una celda referenciada con indices ( Libro.Cells[j,i] := myVar ), ésta se pueda conviertir en la celda activa; Mi intención es que bajo ciertas condiciones la celda pueda cambiar el color de fondo.

He observado que aunque se le pongan valores a las celdas, éstas no se convierten en activas.

Se que se puede usar

Range("A1").Select;

para seleccionar, pero en ejecucion se desconoce la celda que se quiere activar, solo se conoce el número de Renglon y de Columna

Uso D7 y excel2000
Mis definiciones son:
Libro := Excel.WorkBooks[1].WorkSheets[HojaActual];
Libro.Cells[j,i] := MyVar;


Cualquier ayuda se gradece de antemano.

roman
01-03-2005, 22:53:40
Pero a partir de i, j puedes construir la referencia ¿no?

Si i es el renglón y j la columna entonces, por ejemplo, (i=3, j=5) sería "E3".

Algo como:

Char(j + Ord('A')) te dará la letra correcta.

Claro que si pasas de la Z tendrás que ingeniártelas para lidiar con AA, AB, AC, ... , ZZ, etc.

// Saludos

ainclanmx
02-03-2005, 03:26:16
Gracias por tu atencion

Tienes razon, yo lo construyo con i,j y utilizo un array en el que estan definidas las letras 'A' -> 'AZ' y donde necesito las letras, utilizo array[i] y funciona bien siempre y cuando no pase de los limites del arreglo;

Mas bien creo que debe haber una forma que no dependa del arreay y de paso sea mas elegante :D .

Nebli
29-03-2005, 18:10:45
Hola, yo estoy ahora también con el tema de leer y escribir datos en Excel y leerlos desde Excel ( esto último se me está complicando bastante ) y esta es alguna información que he podido recopilar:

// para seleccionar las celdas que forma el cuadro definido DE esquinas B5 y C7
WS.Range['B5', 'C7'].Select;

// para seleccionar la celda B5 solamente
WS.Range['B5', 'B5'].Select;

// Para poner el texto de una celda activa ( la A6 ) en el formato indicado
WS.Range['A6', 'A6'].Select;
with ExcelApplication1.ActiveCell.Font do
begin
Size := 20;
FontStyle := 'Bold';
Color := clgreen;
Name := 'Arial';
end;

// para poner los tres primeros caracteres en una celda en regrita y el resto normales
WS.Range['A9', 'A9'].Select;
Start := 1;
Length := 3;
ExcelApplication1.ActiveCell.Characters[Start, Length].Font.FontStyle := 'Bold';
Start := 4;
Length := 16;
ExcelApplication1.ActiveCell.Characters[Start, Length].Font.FontStyle := 'Regular';

Si necesitas alguna cosa más, si la tengo te la hago llegar.

Un saludo. Neblí.