afiget
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: А отладка для кого сделана - тяжело что ли проверить какой из елементов "Sheet.Range[i,8].Comment." не инициализирован? Если у Range не было комментария, то Range.Comment = nil | Это понятно. Так и делал, но сообщение отладчика о том, что выражение не мождет быть вычислено путает планы :) Цитата: Для добавления - если комментраия нет - надо сделать Range.AddComment() | Вопрос не в том, как записать коментарий для ячейки. Примеров этого чуда хватает в инете, хотя бы в Королевстве. Вопрос был: "Как присвоить переменной в программе коментарий для указанной ячейки?" Как бы там ни было. Разобрался сам. Есть определенные нюансы. Код: var T1: Variant; for i:=1 to Rows do begin Cmt:=nil; TempStr:=''; Cmt:=Excel1.Range[Excel1.Cells.Item[i, 8], Excel1.Cells.Item[i, 8]].Comment; if Cmt<>nil then // если есть примечание, можно работать begin T1:=Cmt.Text('1',1,false); // обязательно сначала в переменную типа Variant, иначе ошибка OLE // кроме того, вставляется не пустая строка '', а '1' // опять же, иначе - ошибка OLE TempStr:=VarToStr(T1); // и только теперь в строку TempStr:=ReplaceStr(TempStr,'1',''); // удалим шаманство TempStr:=Trim(ReplaceStr(TempStr,'Имя автора:'+Chr(10),'')); // а также имя автора примечание end; end; | Добавлено: Впрочем, я перестраховался :) Можно сразу TempStr:=Cmt.Text('1',1,false); метод Text возвращает строку, поэтому доп. преобразований не нужно. Естественно, для Cmt, который <> nil. |