【发布时间】:2015-06-18 16:17:48
【问题描述】:
我有一个宏,可以创建一个从一个工作簿到另一个工作簿的按钮和列表框。我已经向按钮添加了一个函数,以便使用从列表框中选择的项目填充新创建的工作簿工作表中的单元格。不幸的是,我不断得到一个对象变量或未设置块变量。但这是不可能的,因为我已经设置了这个。我还尝试在子外部创建变量以使它们成为全局但没有运气,任何帮助将不胜感激!这是我的代码: 请记住,这一切都在工作簿 A 中完成,并且按钮和列表框已添加到工作簿 B
Public drpdwn As ListBox
Public sub WorkbookCreate()
...some code
Set drpdwn = NewBook.Sheets("sheet1").ListBoxes.Add(150, 1, 100, 50)
With drpdwn
.AddItem "Paris"
.AddItem "New York"
.AddItem "London"
.name = "drpdwn"
End With
Set btn = NewBook.Sheets("sheet1").Buttons.Add(49, 1, 60, 15)
With btn
.OnAction = "Findcity"
.Caption = "Find"
.name = "Find"
End With
End sub
'Function to obtain city selected
Function Findcity()
MsgBox ("clicked")
Dim i As Integer
For i = 0 To drpdwn.ListCount - 1
If drpdwn.Selected(i) Then ActiveWorkbook.Sheets("sheet1").Cells(1, 1).Value = drpdwn.List(i)
Next i
End Function
【问题讨论】:
-
问题 - 您在工作簿 B 中有一个按钮,并且您将“OnAction”指定为“Findcity”。工作簿 B 中有“Findcity”吗?
-
@Juliusz 宏在工作簿 A 上运行并在工作簿 B 上创建了查找按钮,findcity 是按钮调用的函数。我在这里添加了一个 msgBox 来测试按钮是否正在调用该函数
-
我发现了我的问题,问题是我将变量 drpdwn 设置为等于 newbook.sheets。因此,当我单击新页面上的按钮时,它试图找到这本新书,但它应该是 activeworkbook,因为我现在正在使用它。感谢您的帮助!