Як програмно приховати стовпці в Excel?
Питання: як програмно з Делфі приховати стовпці в Excel-файлі?
Вся складність в тому, що до стовпців можна звертатися за номерами, як до рядків. Або якщо можна, то скажіть як.
Приклад приховування рядків з 20 по 30 в Excel:
Ex.Rows [ "20:30"]. Select;
Ex.Selection.EntireRow.Hidden: = True;
Буду дуже вдячний, якщо і для стовпців напишіть що-небудь подібне.
Можна спробувати звернутися по буквах ;-)
мені просто при формуванні звіту треба приховувати 4 шпальти через кожні 3 в циклі. і як до них по буквах то звертатися.
"
Columns ( "A: C"). Select
Selection.EntireColumn.Hidden = True
End Sub
через букви і так ясно що можна, але мені треба тільки через цифри до стовпців звертатися.
> Побудова дерева (11.02.04 11:02) [4]
> Через букви і так ясно що можна, але мені треба тільки через
> Цифри до стовпців звертатися.
Ах які такі круті бажання: - |
А цифри в букви переводити все ще не навчилися?
я робив такий переклад, але він незручний і косячіт в деяких шпальтах (особливо коли йдуть стовпи з двома буквами). я просто знаю що можна якось через цифри це зробити. але ось тільки як?
що нитка на зразок цього.
function ColNumberToColName (ColNumber: Word): string;
const
CharCount = ord ( "Z") - ord ( "A") + 1;
begin
if ColNumber <= CharCount then
Result: = Char (ord ( "A") + ColNumber - 1)
else
Result: = Char (ord ( "A") + ColNumber div CharCount - 1) + Char (ord ( "A") + ColNumber mod CharCount - 1)
end
jack128 - немає, тільки через цифри. команда повинна бути чимось схожа на цю:
WorkBook.WorkSheets [1] .Range [WorkBook.WorkSheets [1] .Cells [y1, x1], WorkBook.WorkSheets [1] .Cells [y2, x2]];
(Вона об'єднує осередки. Спочатку теж думав, що через цифри не можна так зробити, а виявляється можна, також і зі стовпцями має бути)
Да блін. в тому ж об'єкті, де ти пишеш Ex.Rows також є властивість Columns [] до якого я завжди звертаюся через цифри, тобто Ex.Columns [1], Ex.Columns [2] і т.д.
Ну може такий код прокотить?
RangeName: string;
for i: = 1 to 50 do
CelRangeName: = ColNumberToColName (i * 7) + ":" + ColNumberToColName (i * 7 + 2) + ",";
SetLength (RangeName, Length (RangeName) - 1);
Ex.Range (RangeName) .EntireColumn.Hidden = True;
Через цифри ще якомога:
olookin: а як наприклад з m по n вибрати?
Так як я написав - не можна змінювати ширину стовпців. Треба так:
З m по n зрозуміло в циклі
for i: = 1 to 10 // починати завжди з 1 або більшого значення i
Excel.Workbooks [BookIndex] .Sheets [SheetIndex] .Columns [i] .ColumnWidth: =
MyColumnValue;
Або так, тобто без циклу, тобто швидше
V: Variant;
V: = Excel.Workbooks [BookIndex] .Sheets [SheetIndex];
// поміняє ширину з першого по 5-й стовпець
V.Range [V.Cells [1,1], V.Cells [1,5]]. ColumnWidth: = 5;
Або це: приховає з першого по п'ятий стовпець
V: = Excel.Workbooks [BookIndex] .Sheets [SheetIndex];
V.Range [V.Cells [1,1], V.Cells [1,5]]. EntireColumn.Hidden: = true;
olookin спасибі, все працює.