Нельзя установить свойство NumberFormat класса Range

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Gray[cLmT]
Сообщения: 8
Зарегистрирован: 18 мар 2009, 07:06

У меня другой вопрос, я в ячейке хочу сделать формат в '%'
выполняю команду:
Excel.WorkBooks[1].WorkSheets[1].Cells[6, 6].NumberFormat := '0.00%';
в результате ошибка: "Нельзя установить свойство NumberFormat класса Range", может быть вы тут пожалуйста подскажите.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

А NumberFormatLocal?
Gray[cLmT]
Сообщения: 8
Зарегистрирован: 18 мар 2009, 07:06

Нет с NumberFormatLocal аналогичная ошибка
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Странно.
Эта ошибка обычно возникает, если свойство read-only.
Также она может возникать, если Excel находися в определенном статусе. Например, ничего нельзя форматировать, пока Excel находится в режиме редактирования ячейки. Т.е. форматировать можно только символы в этой ячейке, а все остальное - нет.
Можно взглянуть на весь код, начиная от открыити книги, до места с ошибкой?
Gray[cLmT]
Сообщения: 8
Зарегистрирован: 18 мар 2009, 07:06

Да, конечно:

Код: Выделить всё

procedure TForm1.Button2Click(Sender: TObject);
var
    Excel: Variant;
begin
    Excel := CreateOleObject('Excel.Application');
    Excel.WorkBooks.add;
    Excel.Visible := False;
    Excel.Range['B1', 'C10'].NumberFormat := '0.00%';
Gray[cLmT]
Сообщения: 8
Зарегистрирован: 18 мар 2009, 07:06

и в этой же процедуре следом записываю в ячейки:

Код: Выделить всё

    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 1]:='Время';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 2]:='КОКС';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 3]:='Порфирит';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 4]:='Доломит';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 5]:='Шлак';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 6]:='КОКС';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 7]:='Доломит';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 8]:='Порфирит';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 9]:='Шлак';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 10]:='Всего шихты';
    Excel.WorkBooks[1].WorkSheets[1].Cells[1, 11]:='Мк';
    Excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Bold := True;
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Выделяю в отдельную тему
[quote="Gray[cLmT"]
У меня другой вопрос, я в ячейке хочу сделать формат в '%'
выполняю команду:
Excel.WorkBooks[1].WorkSheets[1].Cells[6, 6].NumberFormat := '0.00%']
Изображение
Gray[cLmT]
Сообщения: 8
Зарегистрирован: 18 мар 2009, 07:06

Попробывал с выделением... тоже ошибка

Код: Выделить всё

procedure TForm1.Button4Click(Sender: TObject);
var
    Excel: Variant;
begin
    Excel := CreateOleObject('Excel.Application');
    Excel.WorkBooks.add;
    Excel.Range['A1: C1'].Select;
    Excel.selection.Columns.NumberFormatLocal := '0.00%';
end;


---------- Post added at 11:00 ---------- Previous post was Вчера at 09:56 ----------

Лапухнулся... нужно запятую вместо точки... пардон.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

На счет запятых и точек:

Свойства, заканчивающиеся на Local используют значения, в которых разделитель берется из национальных настроек. Так что ставбте на запятую или точку, а Sysutils.DecimalSeparator
Ответить