LINUX.ORG.RU

помогите написать макрос или подскажите как это сделать без него

 


0

2

LO Calc

помогите, пожалуйста, разобраться, как сделать так, чтобы при внесении даты в ячейку, в следующей ячейке появлялась формула вида «ячейка с датой»+214, например.

спасибо!

★★★★★

А представьте себе, что прямо так и можно: =A1+214; тип обоих ячеек должен быть дата, разумеется.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

не не. вы меня не поняли- нужно, чтобы таблица изначально была пустая и формула эта автоматически вводилась в ячейку только при введении даты.

сейчас именно так, как вы написали, у меня введена формула по всему столбцу, а даты я добавляю вручную постепенно. но дат сейчас около тысячи, а столбец с формулой рассчитан примерно на 60 000, и это сильно замедляет манипуляции с таблицей и доставляет ещё некоторые неудобства.

pyometra ★★★★★
() автор топика
Ответ на: комментарий от pyometra

Т.е. =if(A1>0;A1+214;"") не вариант?

Тогда можно макрос написать и запускать вручную или хоткеем. А как повесить на событие обновления ячейки с ходу не скажу: там uno достаточно навороченное.

Belomir
()
Ответ на: комментарий от smilessss

я ни в чем больше не умею. тем более calc всем устраивает, кроме тугости ворочанья больших таблиц.

pyometra ★★★★★
() автор топика
Ответ на: комментарий от Oxdeadbeef

Кхм, R?

а?

ещё важно- в этих же таблицах работают тётки и бабули в конторах.

pyometra ★★★★★
() автор топика

Ну, нагугливается, как оказалось не долго.

Добавляется listener на событие modify для требуемых ячеек (в примере B1:B16), а в событие пишется код. Из вызвавшего событие объекта можно выудить его адрес и сделать что-то. В примере просто ставится слово «filled».

REM  *****  BASIC  *****

option explicit

sub addListeners
	dim i%
	dim oCell as object
	dim oListener as object
	for i=0 to 15
		oCell = thisComponent.Sheets(0).getCellByPosition(2,i)
		oListener = createUnoListener("Modify_", "com.sun.star.util.XModifyListener")
		oCell.addModifyListener(oListener)
	next i
end sub

sub Modify_modified(oEvent)
	'msgbox oEvent.Source.SpreadSheet.DBG_Properties
	thisComponent.Sheets(oEvent.Source.CellAddress.Sheet).getCellByPosition(oEvent.Source.CellAddress.Column + 1, oEvent.Source.CellAddress.Row).string = "Filled"
end sub

sub Modify_disposing(oEvent)
end sub

sub removeListeners
	dim i%
	dim oCell as object
	dim oListener as object
	for i=0 to 15
		oCell = thisComponent.Sheets(0).getCellByPosition(2,i)
		oListener = createUnoListener("Modify_","com.sun.star.util.XModifyListener")
		oCell.removeModifyListener(oListener)
	next i
end sub

Enjoy!

Belomir
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.