Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel &引用;对象不支持此属性或方法;但在不同的功能中起作用_Excel_Vba - Fatal编程技术网

Excel &引用;对象不支持此属性或方法;但在不同的功能中起作用

Excel &引用;对象不支持此属性或方法;但在不同的功能中起作用,excel,vba,Excel,Vba,当用户单击按钮时,我调用了这个函数。它应该打开一个新的工作表(如果它还不存在),添加一个列表框,并向其中添加值。它做的更多,但为了在这里发布,我删除了很多代码,但确保它抛出相同的错误。如果您看到一些小错误,那只是因为我错误地截断了它或更改了变量名 问题是在以下行抛出错误“对象不支持此属性或方法错误”: 此工作簿。工作表(“FFL”).xxx.AddItem“hi” 我试着从这个函数调用另一个函数,但仍然得到相同的错误当我将同一行复制并粘贴到一个单独的函数中,并在创建工作表后单独运行它时,它工作正

当用户单击按钮时,我调用了这个函数。它应该打开一个新的工作表(如果它还不存在),添加一个列表框,并向其中添加值。它做的更多,但为了在这里发布,我删除了很多代码,但确保它抛出相同的错误。如果您看到一些小错误,那只是因为我错误地截断了它或更改了变量名

问题是在以下行抛出错误“对象不支持此属性或方法错误”:

此工作簿。工作表(“FFL”).xxx.AddItem“hi”

我试着从这个函数调用另一个函数,但仍然得到相同的错误当我将同一行复制并粘贴到一个单独的函数中,并在创建工作表后单独运行它时,它工作正常。

我尝试过像fffl.xxx.AddItem:=“hi”,list.AddItem“hi”这样的变体

我什么都试过了

Public Sub Test()
If sheetExists("FFL") Then

MsgBox ("Only one FFL session can be open at a time.")

Else

pmsID = Application.Caller
Set sheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets("FFL Calendar"))
sheet.Name = "FFL"
Set fffl = ThisWorkbook.Worksheets("FFL")

Dim list As Object
Set t = fffl.Range("B7")
Set list = fffl.OLEObjects.Add(ClassType:="Forms.ListBox.1", Left:=t.Left, Top:=t.Top, Width:=t.Width * 2, Height:=t.Height * 5)
list.Name = "xxx"
ThisWorkbook.Worksheets("FFL").xxx.AddItem "hi"

尝试将此工作簿.Worksheets(“FFL”).xxx.AddItem“hi”行替换为

list.Object.AddItem "hi"

.OLEObjects.Add
方法返回一个
OLEObject
对象,该对象没有
AddItem
方法。但是,它的
.Object
属性返回实际的底层对象,在本例中是一个
列表框
:多态性最好,也是最容易混淆的:)

对于工作表对象没有.xxx这样的方法。为什么不使用
list.additem“hi”
?您已经将新列表设置为
列表
。您是否尝试过
list.AddItem“hi”
?xxx名称传播需要一些时间。如果您在设置名称后添加DoEvents,它应该会工作orry@VincentG,在发布我的评论之前没有看到您的评论:)这很有效!一定程度上当我在创建列表框后立即运行代码时,它会工作,但是如果我在子框中进一步尝试,它会给出相同的错误。我也不明白为什么当我从一个单独的子对象调用它时,它不需要这个对象属性。我会进一步调查,但我的思路是正确的。请你详细说明一下。什么有效,什么无效。ThanksIt在进入for循环后不能直接工作:`RowCount=SN.Cells(Rows.Count,1).End(xlUp).Row for i=3到RowCount list.Object.AddItem“hi”下一个我`It抛出了相同的错误我添加了你的循环,它对我来说很好。请更新您的问题,以便在循环中添加行。为了能够帮助您,我需要了解发生了什么,直到您进入循环。这是我为处理半敏感信息而构建的东西,因此我宁愿不完整地共享它。最后,我将循环移动到我创建列表框的部分的正下方,现在它工作正常。AddItem行沿sub向下运行,直到我将其放入For循环。但一旦我把它放在创建列表框的下面,它就会在for循环中工作。关于这件事的很多事情仍然没有意义,但我不能在这件事上投入更多的精力/精力。我正在利用我现在所拥有的,继续前进。谢谢你的帮助。