我得到了设置格式>“日期”的单元格区域,并且默认情况下,当我输入任何数字时,它将转换为日期,我输入的日期和1900年1月。当前月/年而不是1900年1月
如何更改它,以便在输入一天中的数字之后始终保持当前的月份和年份?
如何在LibreOffice Calc中做到这一点?
我得到了设置格式>“日期”的单元格区域,并且默认情况下,当我输入任何数字时,它将转换为日期,我输入的日期和1900年1月。当前月/年而不是1900年1月
如何更改它,以便在输入一天中的数字之后始终保持当前的月份和年份?
如何在LibreOffice Calc中做到这一点?
这是用于Excel。本实施例中通过A10地方使用来自A1范围在工作表中的代码区域以下事件宏:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, rint As Range, r As Range
Set rng = Range("A1:A10")
Set rint = Intersect(rng, Target)
For Each r In rint
Application.EnableEvents = False
r.Value = DateSerial(Year(Date), Month(Date), r.Value)
Application.EnableEvents = True
Next r
End Sub
因为它是工作表的代码,这是非常容易安装和自动使用:
如果您有任何疑虑,请先在试用工作表上尝试。
如果保存工作簿,宏将与其一起保存。 如果您正在使用一个版本的Excel更高然后2003,你必须保存 该文件作为.XLSM而非的.xlsx
要删除宏:
要了解更多关于一般的宏,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解更多有关事件宏(工作表的代码),请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
宏必须为此工作启用!
该代码将获取您输入的值并将其替换为正确构建的日期。您可以更改范围以满足您的需求。
@ Gary's Student的解决方案可以按如下方式适用于LibreOffice。
Sub ContentChangedHandler(oChangedRange As Object)
Dim oSheet As Object
Dim oCheckingRange As Object
Dim oIntersectRanges As Object
Dim oIntersectRange As Object
Dim oData()
Dim oRow()
Dim i%, j%, k%
oSheet = ThisComponent.getSheets().getByIndex(0)
oCheckingRange = oSheet.getCellRangeByName("A1:A10").getRangeAddress()
oIntersectRanges = oChangedRange.queryIntersection(oCheckingRange)
For i = 0 to oIntersectRanges.getCount() - 1
oIntersectRange = oIntersectRanges.getByIndex(i)
oData() = oIntersectRange.getDataArray()
For j = LBound(oData()) To UBound(oData())
oRow() = oData(j)
For k = LBound(oRow()) To UBound(oRow())
oRow(k) = CLng(DateSerial(Year(Date), Month(Date), oRow(k)))
Next
Next
oIntersectRange.setDataArray(oData())
Next
End Sub
要设置事件,请右键单击工作表选项卡并选择Sheet Events
。将Content changed
事件分配给上面的宏。
请确保将格式设置为日期格式,转到Format -> Cells
,否则它们将显示为普通数字。
您可以在计算此工作簿时选择“选项 - >高级 - >”,并选中*使用1904年日期系统* ....旁边的框,将其更改为1904年1月。但是,就我而言。 2013年的类似问题,也没有真正的解决方案:https://stackoverflow.com/questions/14993664/change-default-date-value-while-entering-time – RealCheeseLord
这基本上是不可能实现的一般。日期表示法只是应用于单元格值的数字格式。您可以通过添加仅包含公式的附加列来部分解决问题。让我们假设包含您输入的列是列A,并且单元格C1包含官方零日期的偏移量。然后在B列中使用公式= A1 + $ C $ 1并在整个B列中填入公式。 – moggi