有效的代码如下:
Windows("Contract Drilldown (3).xls").Activate
当我使用时:
Windows(Chr(34) & ddlOpenWorkbooks.Value & Chr(34)).Activate
我明白了:
运行时错误' 424':需要对象
如果我使用字符串变量传递值,即:
Dim wbn As String
wbn = "Contract Drilldown (3).xls"
Windows(Chr(34) & wbn & Chr(34)).Activate
我明白了:
运行时错误' 9':下标超出范围
如果我使用
wbn = ddlOpenWorkbooks.Value
Windows(Chr(34) & wbn & Chr(34)).Activate
我也得到了
运行时错误' 424':需要对象
任何人都知道如何在不出错的情况下传入 ddlOpenWorkbooks.Value ?
好的,应用程序看起来像这样:
导入数据按钮的完整代码块是:
Public Sub Data_Import()
Windows(ddlOpenWorkBooks.Value).Activate
Columns("A:V").Select
Selection.Copy
Omni_Data.Activate
Range("A1").Select
ActiveSheet.Paste
Omni_Data.Range("A:Z").Interior.ColorIndex = 0
Omni_Data.Range("A:Z").Font.Name = "Segoe UI"
Omni_Data.Range("A:Z").Font.Name = "Segoe UI"
'Setting Background Colour to white and changing font
End Sub
按钮上的Click Event调用上面的Sub。
作为测试,关闭按钮具有以下代码:
Private Sub cmdCancel_Click()
MsgBox (ddlOpenWorkbooks.Value)
End
End Sub
哪种方法正常:
所以我们找到了问题。
由于这是从一个模块调用的,因此它不知道ddlOpenWorkbooks的位置以及从哪里提取数据。
Sub中的更正代码是:
Public Sub Data_Import()
Windows(frmOmniDataManipulation.ddlOpenWorkbooks.Value).Activate
Columns("A:V").Select
Selection.Copy
Omni_Data.Activate
Range("A1").Select
ActiveSheet.Paste
Omni_Data.Range("A:Z").Interior.ColorIndex = 0
Omni_Data.Range("A:Z").Font.Name = "Segoe UI"
Omni_Data.Range("A:Z").Font.Name = "Segoe UI"
'Setting Background Colour to white and changing font
End Sub
这将允许我调用sub。
全部谢谢!
答案 0 :(得分:0)
你试过了吗?
Windows(ddlOpenWorkbooks.Value).Activate
只有在输入值时才需要引号。如果您以其他方式传递值,则引号是不必要的。
更新
以下是我采取的步骤,它们允许我激活所选窗口而没有错误。
我使用名为ddlOpenWorkbooks
的ComboBox和2个按钮创建了一个Userform。
为了便于说明,我将ComboBox的RowSource硬编码,但这不应该是问题。
我的第一个按钮显示一条消息,其中包含ddlOpenWorkbooks
所选工作簿的名称。
以下是按钮的代码
Private Sub btnMessage_Click()
MsgBox Me.ddlOpenWorkbooks.Value
End Sub
结果如下
我的第二个按钮使用ddlOpenWorkbooks
中的选项并激活该窗口。这是代码。
Private Sub btnActivate_Click()
Windows(Me.ddlOpenWorkbooks.Value).Activate
End Sub
这是结果
最终更新:
将ddlOpenWorkbooks.Value传递给另一个不是UserForm事件的过程时,您需要包含UserForm的名称。
这是您在过程中需要从ComboBox正确获取值的行:
Windows(frmOmniDataManipulation.ddlOpenWorkbooks.Value).Activate
答案 1 :(得分:0)
如果这是组合框,那么我相信
ddlOpenWorkbooks.List(ddlOpenWorkbooks.ListIndex)
将返回所选值。 或者,您可以使用
传入索引值ddlOpenWorkbooks.List(#)