我是VBA领域的新手,目前正在尝试创建一个函数。
我正在用excel创建个人项目的计划。
我有4种不同的开始日期类型。
您可以想象它不起作用...因为显然该函数未定义...
如果您能帮助我解决这个问题,那就太好了。
这里是代码:
Public Function StartDate(dateType As Range, _
Optional stateTask As Range, _
Optional groupeDate As Range, _
Optional dateSimp As Range, _
Optional dateLink As Range, _
Optional dateSpacing As Range)
Application.Volatile
If Worksheet("TIME-DATE PARAM").Range("dateType").Value = 1 Then
If Worksheet("TIME-DATE PARAM").Range("stateTask") <> 0 Then
StartDate = Application.WorksheetFunction.Min("groupeDate")
Else
StartDate = ""
End If
Else: Worksheet("TIME-DATE PARAM").Range("dateType").Value = 2
StartDate = ""
Else: Worksheet("TIME-DATE PARAM").Range("dateType").Value = 3
StartDate = Worksheet("TIME-PLAN.SIMP").Range("dateSimp")
Else: Worksheet("TIME-DATE PARAM").Range("dateType").Value = 4
Dim i As Integer
i = 0
Dim j As Integer
j = 11
StartDate = Application.WorksheetFunction.WorkDay_Intl( _
Application.WorksheetFunction.Index(range ("Q13:Q820"), _
Application.worksheetFunction.Match(Worksheet("TIME-PLAN.SIMP").range("dateLink").value), _
Worksheet("TIME-PLAN.SIMP").range("A13:A820"), _
i), _
i), _
Worksheet("TIME-PLAN.SIMP").range("dateSpacing").value, _
j, _
Worksheet("TIME-PLAN.SIMP").range("H2:L4"))
End If
End Function
提前感谢
在顶部插入:
Option Explicit
由于您的所有输入均为Range
对象,因此请替换所有行,如:
Worksheet("TIME-DATE PARAM").Range("dateType").Value = 2
with:
dateType.Value = 2
这是因为Range
对象已经“知道”其父级工作表。
也替换:
WorkDay_Intl
with:
WorkDay.Intl
可能还有其他错误。