Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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宏-Windows()。激活不获取值_Excel_Vba - Fatal编程技术网

Excel宏-Windows()。激活不获取值

Excel宏-Windows()。激活不获取值,excel,vba,Excel,Vba,有效的代码如下所示: 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) & w

有效的代码如下所示:

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
在按钮的单击事件中调用上述子项

作为测试,关闭按钮具有以下代码:

Private Sub cmdCancel_Click()
    MsgBox (ddlOpenWorkbooks.Value)
    End

End Sub
哪种方法很好:

使现代化 所以我们发现了问题所在

由于这是从一个模块调用的,所以它不知道OpenWorkBooks在哪里,也不知道从哪里提取数据

子部件中的更正代码为:

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
这将允许我给潜艇打电话

谢谢大家

您是否尝试过:

Windows(ddlOpenWorkbooks.Value).Activate
只有在键入值时才需要引号。如果以其他方式传递值,则不需要引号

更新

以下是我所采取的步骤,它们允许我无误地激活所选窗口

我创建了一个Userform,其中有一个名为ddlOpenWorkbooks的组合框和两个按钮。

为了便于说明,我对组合框的行源代码进行了硬编码,但这不应该是这里的问题

“我的第一个”按钮显示一条消息,其中包含从ddlOpenWorkbooks中选择的工作簿名称

这是按钮的代码

Private Sub btnMessage_Click()
    MsgBox Me.ddlOpenWorkbooks.Value
End Sub
结果如下

我的第二个按钮使用OpenWorkBooks中的选择并激活该窗口。这是代码

Private Sub btnActivate_Click()
    Windows(Me.ddlOpenWorkbooks.Value).Activate
End Sub
结果如下

最后更新:

将ddlOpenWorkbooks.Value传递给另一个非UserForm事件的过程时,需要包含UserForm的名称

这是过程中正确从组合框中获取值所需的行:

Windows(frmOmniDataManipulation.ddlOpenWorkbooks.Value).Activate

如果这是combobox,那么我相信

ddlOpenWorkbooks.List(ddlOpenWorkbooks.ListIndex) 
将返回所选的值。 或者,您可以使用

ddlOpenWorkbooks.List(#)

这是个愚蠢的问题,但什么是OpenWorkBooks?这是一个下拉列表。它后面的子项显示了所有打开的工作簿,我在messagebox中对其进行了测试,它显示了与上面完全相同的Contract Drilldown 3.xls。通过下拉列表,您是指添加到VBA用户表单的组合框?是的,就是这样:运行时错误“424”:出现了所需对象:我编辑了更多详细信息。如果您仍然遇到错误,我们需要更多详细信息。在上面添加了更多详细信息。好的,我已将WindowsddlOpenWorkbooks.Value.Activate放入按钮单击事件中,这似乎有效。为什么?我不知道。问题似乎是当我调用Sub时,而不是让它直接从按钮上运行。因此,我90%确定当我在单击事件中调用Sub时会发生错误,因为在我使用messageBox进行测试时会抛出相同的错误。因此我尝试了:WindowsddlOpenWorkbooks.ListddlOpenWorkbooks.ListIndex.Activate,但仍然得到错误:424需要对象为什么放置Windows?来自组合框的值是打开的工作簿的名称。它正在传递到Windows,以便打开的工作簿可以从中复制和粘贴数据。因此,我使用了Windows.ActivatedLopenWorkBooks.Value是否从ComboBox返回所选项目您是否尝试使用工作簿、工作表对象来推送该值?