我有以下简单的代码:
<script>
var fruits = ["apple","pear","banana","orange"];
function showList(){
list = document.createElement("LI");
list.setAttribute("href","#");
for(i=0;i<fruits.length;i++){
list = fruits[i];
}
}
</script>
<ul id="list-container" onload="showList();">
</ul>
但是我得到了
424错误:需要一个对象
任何人都可以告诉我为什么会这样?
答案 0 :(得分:1)
您需要"dd/mm/aaa"
周围的引号(我认为应该是"dd/mm/yyyy"
)
您也可能想要使用它,因为Format
返回一个字符串,而不是日期:
currentday = CVDate(Format(WorksheetFunction.WorkDay(Now(), -1), "dd/mm/yyyy"))
答案 1 :(得分:1)
您似乎正在尝试格式化今天,我会用Now()替换它,并且它按预期工作。
将您的代码更改为以下内容:
Sub newsub()
Dim currentday As Date
currentday = Format(Now() - 1, "dd/mm/yyyy") 'use Now() and format to your liking to get the right date
MsgBox currentday
End Sub
答案 2 :(得分:1)
WorskheetFunction.WorkDay
这里有一个拼写错误,VBA运行时不知道要解决WorkskheetFunction
要解决的问题,而因为未指定Option Explicit ,它会在此处创建一个未声明的变量fly,一个隐式Variant
,它的基础类型取决于你使用它的方式和位置。
因为ABC.XYZ(foo, bar)
只能在语法上成为对某个对象的成员调用,所以VBA运行时期望WorkskheetFunction
成为一个对象,而它不是 - 它从未被赋值,所以它的底层类型是{ {1}},它不是一个对象 - 因此,抛出了“Object Required”错误。
然后,您将不会愉快地使用拼写错误编译和运行代码。
您还可以通过使用全局Variant/Empty
对象限定WorksheetFunction
来利用IntelliSense来帮助防止拼写错误:
Application
这样,当您键入Application.WorksheetFunction.WorkDay(...)
点时,您将获得自动完成/智能感知。另一个区别是,如果工作表函数抛出错误,使用这种早期绑定语法,您将获得实际的VBA运行时错误,而使用您正在使用的后期绑定语法(使用它不会获得参数工具提示/ intellisense)如果函数导致错误值,它将返回错误并对.
变量进行无效赋值,从而引发可能令人困惑的“类型不匹配”错误。