初学者代码问题:“未定义子或函数”
Posted
技术标签:
【中文标题】初学者代码问题:“未定义子或函数”【英文标题】:Beginner Code Problem : "Sub or Function not Defined" 【发布时间】:2020-05-10 13:26:07 【问题描述】:我是 VBA 领域的新手,目前正在尝试创建一个函数。
我正在为个人项目创建一个 Excel 计划。
我有 4 种不同类型的开始日期。
-
类型1:日期是一组日期中最早的日期
类型 2:日期是完全手动的,由用户填写,因此函数返回 ""
类型 3:日期来自同一工作簿中的另一个工作表
类型 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
提前致谢
【问题讨论】:
乍一看我会说你错过了Worksheet
中的s
。 Anbd 第二个提示:你的代码中有很多else
。
如果您确切地提到哪一行 ws 给您错误,这将有所帮助。 它不起作用几乎没有特定线路位置有用。
将给出错误的第一行是 If Worksheet("TIME-DATE PARAM").Range("dateType").Value = 1 Then
行,因为 OP 错过了 s
。然后几个Else
行将失败。而startdate =Application.WorksheetFunction.WorkDay_Intl( ...
这条线完全搞砸了。
首先感谢您的回答,@Storax 当您说我错过了 S 时,您的意思是 WorksheetS 而不是 Worksheet ?为什么几个“else”会失败?
我建议先看看语法:Worksheet 和If condition。
【参考方案1】:
在顶部插入:
Option Explicit
由于您的所有输入都是 Range
对象,因此请将所有行替换为:
Worksheet("TIME-DATE PARAM").Range("dateType").Value = 2
与:
dateType.Value = 2
这是因为Range
对象已经“知道”它的父工作表。
同时替换:
WorkDay_Intl
与:
WorkDay.Intl
可能还有其他错误。
【讨论】:
以上是关于初学者代码问题:“未定义子或函数”的主要内容,如果未能解决你的问题,请参考以下文章
URLDownloadToFile 生成编译错误:未定义子或函数