0
我正在使用Calc(来自OpenOffice)进行工作。在OpenOffice中这个“时间更新功能”有什么问题?
我有一个电子表格,就像这样:
如果F列更新时,E列将与当前编辑时间打印。
我写这个宏对我的工作:
Option VBASupport 1
Global oListener As Object
Global oScalcDocument As Object
Global oGroup6 as Object
Global CurRow as integer
Global GnameCO as String
Global Gcheck_name as Boolean
Sub RangeEventlistenerOn
CurRow = 0
oScalcDocument=ThisComponent
'---installation of an event listenr
oListener = createUnoListener("OOO_","com.sun.star.chart.XChartDataChangeEventListener")
oSheet = oScalcDocument.Sheets(0)
oSheet.Protect("")
oGroup6=oSheet.getColumns.getByIndex(5)
oGroup6.addChartDataChangeEventListener(oListener)
End Sub
Sub RangeEventlistenerOff
oGroup6.removeChartDataChangeEventListener(oListener)
End Sub
Sub OOO_chartDataChanged
CurRow = 2
'print(CurRow)
oScalcDocument=ThisComponent
oSheet = oScalcDocumet.Sheets(0)
'Get cell address
oSelection = oScalcDocument.getCurrentSelection
oRangeAddress = oSelection.getRangeAddress
CurRow = oRangeAddress.StartRow
oCell = oSheet.getCellByPosition(4,CurRow)
oCell.SetString(Format(Now,""DD.MM.YYYY hh:mm:ss"))
End Sub
Sub Refresh()
Refresh_data (Format(Date, "DD.MM.YYYY"))
MsgBox("Work finished")
Exit Sub
Exit Sub
End Sub
Sub Save()
Save_data(Format(Date, "DD.MM.YYYY"))
Exit Sub
End Sub
现在,我想这个电子表格更改为其他布局,像这样:
如果第2行已更新,第3行将与当前的editin打印在一起G-时间。
所以,我已经改变了这个宏对我的工作:
Option VBASupport 1
Global oListener As Object
Global oScalcDocument As Object
Global oGroup6 as Object
Global CurCol as integer
Global GnameCO as String
Global Gcheck_name as Boolean
Sub RangeEventlistenerOn
CurCol = 0
oScalcDocument=ThisComponent
'---installation of an event listenr
oListener = createUnoListener("OOO_","com.sun.star.chart.XChartDataChangeEventListener")
oSheet = oScalcDocument.Sheets(0)
oSheet.Protect("")
oGroup6=oSheet.getRows.getByIndex(2)
oGroup6.addChartDataChangeEventListener(oListener)
End Sub
Sub RangeEventlistenerOff
oGroup6.removeChartDataChangeEventListener(oListener)
End Sub
Sub OOO_chartDataChanged
CurCol = 2
'print(CurCol)
oScalcDocument=ThisComponent
oSheet = oScalcDocumet.Sheets(0)
'Get cell address
oSelection = oScalcDocument.getCurrentSelection
oRangeAddress = oSelection.getRangeAddress
CurCol = oRangeAddress.StartColumn
oCell = oSheet.getCellByPosition(3,CurCol)
oCell.SetString(Format(Now,""DD.MM.YYYY hh:mm:ss"))
End Sub
Sub Refresh()
Refresh_data (Format(Date, "DD.MM.YYYY"))
MsgBox("Work finished")
Exit Sub
Exit Sub
End Sub
Sub Save()
Save_data(Format(Date, "DD.MM.YYYY"))
Exit Sub
End Sub
更新的代码无法正常工作。你能告诉我:改变有什么问题吗?
当你说“不能正常工作” - 究竟发生了什么?描述它所做的任何事情,包括您想要保留的事物以及您想要停止的事情,并请提供发生的任何错误消息的全文和时间安排。 – Lyrl
此外,要开始我注意到您添加第3行(索引2)的侦听器,当您的帖子说您想要宏基于行2(索引1)中的更改激活。而当您的帖子说您想要打印到第3行(索引2)时,您正在将时间打印到第4行(索引3)。 – Lyrl