Избавиться от "0" в ячейки

Автор Alex16, 17 ноября 2016, 15:21

0 Пользователи и 1 гость просматривают эту тему.

Alex16

Подскажите пожалуйста, как сделать так, что бы ноль в ячейке не выставлялся, если в ячейке пусто(ну т.е. было там число, нажали Del),
когда записываю их так:
   ThisComponent.Sheets(1).getCellByPosition(Indx * 6 + N, R - StartColRow).setValue(ThisComponent.Sheets(0).getCellByPosition(C, R).GetValue)
Если так писать:
   ThisComponent.Sheets(1).getCellByPosition(Indx * 6 + N, R - StartColRow).SetString(ThisComponent.Sheets(0).getCellByPosition(C, R).GetString)
то ноля нет, но и числа, становятся не числами.

mikekaganski

Формат числа: 0,00;-0,00;"" (для русского)
С уважением,
Михаил Каганский

rami

Цитата: mikekaganski от 17 ноября 2016, 15:32
Формат числа: 0,00;-0,00;"" (для русского)
Это чтобы скрыть нуль, а чтобы не записывался в ячейку, нужно обрабатывать логически: "IF пусто, THEN "" ELSE значение

bigor

#3
Формат ячеек - Числовой - ведущие нули =0 пробовали?

ЦитироватьЭто чтобы скрыть нуль, а чтобы не записывался в ячейку
а что бы не было копировать  copyRange
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Alex16

Цитата: rami от 17 ноября 2016, 13:42"IF пусто, THEN "" ELSE значение
Спасибо. Сделал так:
if ThisComponent.Sheets(0).getCellByPosition(C, R).Type = com.sun.star.table.CellContentType.VALUE then
  ThisComponent.Sheets(1).getCellByPosition(Indx * 6 + N, R - StartColRow).SetValue(ThisComponent.Sheets(0).getCellByPosition(C, R).GetValue)
else if ThisComponent.Sheets(0).getCellByPosition(C, R).Type = com.sun.star.table.CellContentType.EMPTY then
ThisComponent.Sheets(1).getCellByPosition(Indx * 6 + N, R - StartColRow).ClearContents(1023)
else
   MsgBox "Не Число! Данные потеряются!"
   ThisComponent.Sheets(1).getCellByPosition(Indx * 6 + N, R - StartColRow).ClearContents(1023)
endif
endif


bigor

а так не работает?

ThisComponent.Sheets(0).CopyRange(ThisComponent.Sheets(0).getCellByPosition(C, R).getCellAddress(), ThisComponent.Sheets(1).getCellByPosition(Indx * 6 + N, R - StartColRow).getRangeAddress())
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

economist

Сервис - Параметр - Calc - Вид - Нулевые значения
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Alex16

Цитата: Bigor от 17 ноября 2016, 14:38а так не работает?
не пробовал, но метод CopyRange взял на заметку.
Цитата: economist от 17 ноября 2016, 14:39Сервис - Параметр - Calc - Вид - Нулевые значения
не, так не пойдет)