【问题标题】:Hijri Date Formatting回历日期格式
【发布时间】:2021-12-29 02:45:42
【问题描述】:

我有一些从网站下载的数据,其中一列包含回历日期。为了使该列成为正确的日期列,我应用了以下格式:

但是除非我输入单元格(通过双击或 F2)然后按 Enter 键,否则它不会被视为日期并与右侧对齐的问题

因为行数大我用的方式不实用

我尝试了以下方法:

  • 将单元格复制到记事本,然后再次粘贴到 excel 中,但不起作用
  • 将日期分隔符从“-”替换为“.”然后将日期分隔符替换回“-”,就好像日期分隔符是“。”并替换为通常适用于公历日期的“-”,将其从文本转换为日期
  • 创建了一个 VBA 代码,应用所选单元格的代码进入和退出单元格以刷新,请检查以下内容:
Sub HijriDateEnforce()
  Dim cel As Range
  Dim selectedRange As Range
  Set selectedRange = Application.Selection
  For Each cel In selectedRange.Cells
    Selection.NumberFormat = "[$-1970000]B2dd/mm/yyyy;@"
    SendKeys "{F2}~"
  Next cel
End Sub

但是如果行数非常大,代码会因为未知原因停止一段时间,我必须为剩余的单元格再次运行它

【问题讨论】:

  • 你能分享一下你们约会的样子吗?之前和之后?
  • 这是一个日期格式的列,作为文本与单元格的左侧对齐,输入单元格然后按 Enter 后,它将与日期对齐,希望我的解释清楚跨度>
  • 如果您指的是单元格中的日期,它们就像:01-01-1444

标签: excel vba hijri


【解决方案1】:

我讨厌建议 .Select,但我之前建议的内容在您的情况下不起作用。所以试试这个

代码

Sub HijriDateEnforce()
    Dim acell As Range
    Dim selectedRange As Range
    
    Set selectedRange = Application.Selection
    selectedRange.NumberFormat = "[$-1970000]B2dd/mm/yyyy;@"
    
    For Each acell In selectedRange
        acell.Select
        Application.SendKeys "{F2}"
        Application.SendKeys "{ENTER}"
        DoEvents
    Next acell
End Sub

行动中

【讨论】:

  • 感谢您的回复,但不幸的是它仍然是相同的,我必须输入每个单元格才能将单元格格式化为回历日期
  • 我已经更新了代码,现在就试试吧。
  • 代码运行良好,直到最后都没有停止。非常感谢您的宝贵时间。
  • 您知道没有 VBA 的任何方法吗?由于 IT 部门不允许 xlsm(启用宏的文件)文件。政策
猜你喜欢
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 2011-12-20
相关资源
最近更新 更多