使用Excel DateAdd函数

问题描述 投票:0回答:2

我想使用excel DateAdd函数为包含波斯语/日历日期的单元格添加一些天。所以,我创建了一个按钮并为其分配了一个宏,如:

Sub mydateaddfunction()
    Dim FirstDate As Date
    Dim Number As Integer
      FirstDate = Sheets(3).Range("e13").Value
      Number = Sheets(3).Range("b13").Value
      Sheets(3).Range("e14").Value = DateAdd("d", Number, FirstDate)
End Sub

但不幸的是它抛出了一个错误

应用程序定义或对象定义的错误

来自此行的错误:

Sheets(3).Range("e14").Value = DateAdd("d", Number, FirstDate)

e13单元格包含日期,b13包含我想要添加到e13单元格的天数。所以,如果e13单元格如下:

1396/10/17

和b13包含一个像3的数字,我希望e14为:

1396/10/20

我做错了什么?

excel vba excel-vba
2个回答
0
投票

默认情况下,VBA使用格里高利日期日历。因此,我假设您需要将您的Hijri日期转换为格里高利日期,并在添加日期后将格里高利日期转换回Hijri日期。

请试一试......

Sub mydateaddfunction()
    Dim FirstDate As Date
    Dim Number As Integer
    Dim gDate As Date
    FirstDate = HijriToGreg(Sheets(3).Range("e13").Value)
    Number = Sheets(3).Range("b13").Value
    gDate = DateAdd("d", Number, FirstDate)
    Sheets(3).Range("e14").Value = GregToHijri(gDate)
End Sub

Function GregToHijri(dtGegDate As Date) As String
    'Converts Gregorian date to a Hijri date
    VBA.Calendar = vbCalHijri
    GregToHijri = dtGegDate
    VBA.Calendar = vbCalGreg
End Function

Function HijriToGreg(dtHijDate As String) As Date
    'Converts Hijri date to a Gregorian date
    VBA.Calendar = vbCalHijri
    HijriToGreg = dtHijDate
    VBA.Calendar = vbCalGreg
End Function

0
投票

如果是Excel 2016,请将代码更改为

Sub mydateaddfunction()
    Dim FirstDate As Date
    Dim Number As Integer

    Dim rg As Range
    Set rg = Union(Sheets(1).Range("E13"), Sheets(1).Range("E14"))
    rg.NumberFormat = "[$-fa-IR,16]dd/mm/yyyy;@"


      FirstDate = Sheets(1).Range("e13").Value
      Number = Sheets(1).Range("b13").Value
      Sheets(1).Range("e14").Value = DateAdd("d", Number, FirstDate)
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.