![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
excel [D7, WinXP]
Sash © (2004-11-16 09:48:00)здравствуйте! я в тупике :)
копирую таблицы с одного листа на другой
кол-во таблиц - 10 штук, а идут они сверху вниз с разрывом в 2 строки. вот в чем проблема:
начинаю копировать (в цикле) первую таблицу, до появления пустой ячейки, и когда она появляется, действие останавливается, а мне надо сделать чтобы она искала следующую таблицу и скопировала нужные мне столбцы и строки
вот кусок кода:
m:=WB.Sheets.Count;
WB.Sheets.Add(,WB.Sheets[m],1,xlWorksheet)//добавлем новый лист
i:=3;
while not VarIsEmpty(WB.Sheets[alist].Cells.Item[i,1].Value) do Inc(i);
for j:=3 to i-1 do
begin
acol1:=WB.Sheets[alist].Cells[j,2].Value;
WB.Sheets[m+1].Cells[j+1,1].Value := acol1;//здесь alist-номер листа с которого копирую, m-количество листов в книге
.......
.......
.......
и так девять колонок
Скажите плиз, как это сделать?
Заранее благодарен всем кто откликнется!
Sash (2004-11-18 06:37:00) [1]сделал так:
все переменные acoln перевел в вариант и проверил на varisnull и
о чудо! все прекрасно работает!
Спасибо Вам ЮЮ!
Sash (2004-11-18 06:26:00) [2]пишет: operator not applicable to this operand type
Sash (2004-11-18 06:21:00) [3]2 ЮЮ © (18.11.04 03:54) [26]
acol есть стринг
спасибо!, сейчас попробую
ЮЮ (2004-11-18 03:54:00) [4]какого типа acol9 ? стринг или variant?
для стринг
if (acol9 <> '') and (StrToFloat(acol9)>1)
для вариант, возможно, надо будет ещё проверить VarIsNull
Sash (2004-11-17 14:15:00) [5]скажите плиз! где ошибка?
Sash (2004-11-17 13:51:00) [6]опять проблема :)
if VarIsFloat(acol9)=False then
if StrToFloat(acol9)>1 then WB.Sheets[m+1].Cells[j+1,9].Interior.ColorIndex:=10; //12
как встречается пустая ячейка, выдает ошибку
'' is not a valid floating point value
может что неправильно делаю?
Sash (2004-11-17 13:22:00) [7]сделал так:
if VarIsFloat(acol3) then
if strtofloat(acol3)<45 then WB.Sheets[m+1].Cells [j+1,3].Interior.ColorIndex:=6;
вроде работает :)
еще раз всем СПАСИБО!
Gloomer (2004-11-17 12:54:00) [8]> ЮЮ © (17.11.04 12:36) [20]
Виноват, действительно VarIsFloat проверяет только тип переменной. Предложенный Вами вариант действительно более радикальный
> Sash © (17.11.04 12:39) [21]
а что говорит при этом программа?
Sash (2004-11-17 12:39:00) [9]кстати, первую таблицу нарисовал, а как встретилась уже пустая ячейка, программа опять загнулась :(
блин, хреновый из меня прогаммер, пока что :)
ЮЮ (2004-11-17 12:36:00) [10]>посоветуйте пожалуйста, что же тогда предпринять
Для начада, пропускать заголовок:
for j := iStart + 1 to iEnd do begin
>VarIsFloat(const V: Variant): Boolean;. В хелпе почитай
VarIsFloat(string) = false, независимо, что в той стринг нарисовано :)
Gloomer (2004-11-17 12:32:00) [11]есть такая функция
function VarIsFloat(const V: Variant): Boolean;. В хелпе почитай.
тогда получим
if VarIsFloat(acol3)then strtofloat(acol3)
Sash (2004-11-17 12:22:00) [12]точно! есть такое слово в заголовке столбца каждой из десяти таблиц.
посоветуйте пожалуйста, что же тогда предпринять
ЮЮ (2004-11-17 12:14:00) [13]а если в ячейке стояло и в acolX попал текст 'answered'?
Sash (2004-11-17 12:11:00) [14]во вторых - не в тему :)
Sash (2004-11-17 12:09:00) [15]а как сделать иначе? преобразую для : во-первых в таблице много значений с запятой, а во-вторых
если значение ячейки больше определенного лимита, то эту ячейку выделяю цветом
ЮЮ (2004-11-17 12:04:00) [16]strtofloat(acol3)
...
StrToFloat(acol9)
Sash (2004-11-17 12:01:00) [17]у меня вообще нет такой переменной
ЮЮ (2004-11-17 11:53:00) [18]где-то float переменной пытаешься присвоить строку 'answered'
Sash (2004-11-17 11:42:00) [19]блин, выскакивает ошибка:
'answered' is not a valid floating point value
скажите пожалуйста, что не так?
Sash (2004-11-17 11:22:00) [20]2 ЮЮ © (17.11.04 10:07) [7]
Gloomer © (17.11.04 10:24) [8]
Наиль (17.11.04 11:06) [9]
Спасибо Вам всем большое! теперь все ясно.