Vba 使用按钮从列表框中获取所选值

Vba 使用按钮从列表框中获取所选值,vba,excel,listbox,Vba,Excel,Listbox,我有一个宏,可以在工作簿之间创建按钮和列表框。我在按钮中添加了一个函数,以便用从列表框中选择的项目填充新创建的工作簿工作表中的单元格。不幸的是,我一直得到一个对象变量或块变量未设置。但这是不可能的,因为我已经设置了这个。我也尝试过在sub之外创建变量,以使其成为全局变量,但没有运气,任何帮助都将非常感谢!这是我的密码: 请记住,这些都是在工作簿A中完成的,按钮和列表框已添加到工作簿B中 Public drpdwn As ListBox Public sub WorkbookCreate() .

我有一个宏,可以在工作簿之间创建按钮和列表框。我在按钮中添加了一个函数,以便用从列表框中选择的项目填充新创建的工作簿工作表中的单元格。不幸的是,我一直得到一个对象变量或块变量未设置。但这是不可能的,因为我已经设置了这个。我也尝试过在sub之外创建变量,以使其成为全局变量,但没有运气,任何帮助都将非常感谢!这是我的密码: 请记住,这些都是在工作簿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

我解决了我的问题,问题是我正在将变量drpdwn设置为等于newbook.sheets。正因为如此,当我点击新页面上的按钮时,它试图找到这本新书,但它应该是activeworkbook,因为我现在正在使用它。
谢谢你的帮助

问题-工作簿B中有一个按钮,您将“OnAction”指定为“Findcity”。工作簿B中是否为“Findcity”@Juliusz宏在工作簿A上运行,并在工作簿B上创建了“查找”按钮,Findcity是该按钮调用的函数。我在这里添加了一个msgBox来测试该函数是否被按钮调用。我解决了我的问题,问题是我正在将变量drpdwn设置为等于newbook.sheets。正因为如此,当我点击新页面上的按钮时,它试图找到这本新书,但它应该是activeworkbook,因为我现在正在使用它。谢谢你的帮助!