我想使用excel DateAdd函数向包含波斯/hijri日历日期的单元格中添加一些天。因此,我创建了一个按钮并为其分配了一个宏,如下所示:
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
我做错什么了?
发布于 2017-12-27 09:34:41
如果使用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发布于 2017-12-27 09:33:28
默认情况下,VBA使用。因此,我假设您需要将您的Hijri日期转换为Gregorian,并在添加日期之后,将Gregorian转换回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发布于 2020-11-09 01:06:29
对于那些寻找简单解决方案的人,他们可以使用Excel现有的函数"Workday“向数据中添加x个天数。
工作日(start_date,日,假日)
https://stackoverflow.com/questions/47989246
复制相似问题