Excel 当前月份/年份,而不是1900年1月

Excel 当前月份/年份,而不是1900年1月,excel,libreoffice-calc,Excel,Libreoffice Calc,我得到了设置格式>日期的单元格范围,默认情况下,当我键入任何数字时,它将转换为日期,日期为我键入的日期和1900年1月 如何更改它,以便在只键入日数后,我始终获得当前月份和年份 如何在LibreOffice Calc中也执行此操作?这是针对Excel的。此示例使用从A1到A10的范围将以下事件宏放置在工作表代码区域中: Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range, rint As Range,

我得到了设置格式>日期的单元格范围,默认情况下,当我键入任何数字时,它将转换为日期,日期为我键入的日期和1900年1月

如何更改它,以便在只键入日数后,我始终获得当前月份和年份


如何在LibreOffice Calc中也执行此操作?

这是针对Excel的。此示例使用从A1A10的范围将以下事件宏放置在工作表代码区域中:

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窗口底部附近的选项卡名称上单击鼠标右键
  • 选择查看代码-这将打开一个VBE窗口
  • 粘贴内容并关闭VBE窗口
  • 如果您有任何顾虑,请先在试用工作表上试用

    如果保存工作簿,宏将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除宏,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要了解有关宏的更多信息,请参阅:

    要了解有关事件宏(工作表代码)的详细信息,请参阅:

    必须启用宏才能工作


    代码接受您键入的值,并用正确构造的日期替换它。您可以更改范围以满足您的需要。

    来自@Gary学生的解决方案可适用于LibreOffice,如下所示

    Sub-ContentChangedHandler(作为对象的oChangedRange)
    将oSheet设置为对象
    Dim oCheckingRange作为对象
    Dim OInterSpectRanges作为对象
    Dim OInterSpectrage作为对象
    Dim oData()
    Dim oRow()
    尺寸i%、j%、k%
    oSheet=ThisComponent.getSheets().getByIndex(0)
    oCheckingRange=oSheet.getCellRangeByName(“A1:A10”).getRangeAddress()
    ointerSpectRanges=oChangedRange.queryIntersection(oCheckingRange)
    对于i=0到oIntersectRanges.getCount()-1
    oIntersectRange=oIntersectRanges.getByIndex(i)
    oData()=oIntersectRange.getDataArray()
    对于j=LBound(oData())到UBound(oData())
    oRow()=oData(j)
    对于k=LBound(oRow())到UBound(oRow())
    oRow(k)=CLng(日期序列(年(日)、月(日)、oRow(k)))
    下一个
    下一个
    oIntersectRange.setDataArray(oData())
    下一个
    端接头
    
    要设置事件,请右键单击工作表选项卡,然后选择
    工作表事件
    。将
    内容更改
    事件分配给上述宏


    请务必转到
    格式->单元格
    ,将单元格格式化为日期,否则它们将显示为普通数字。

    计算此工作簿时,您可以转到
    选项->高级->将其更改为1904年1月
    ,并选中“使用1904日期系统”旁边的框。。。。但这就是我所能做到的。2013年出现了类似的问题,但也没有真正的解决方案:这基本上不可能普遍实施。日期表示法只是应用于单元格值的数字格式。您可以通过添加一个只包含公式的附加列来部分解决问题。假设包含输入的列是A列,单元格C1包含官方零日期的偏移量。然后在B列中使用公式,如=A1+$C$1,并在整个B列中填充该公式。