【问题标题】:Excel VBA - Fill ActiveX Combobox with dynamic range from another workbookExcel VBA - 用另一个工作簿中的动态范围填充 ActiveX 组合框
【发布时间】:2018-10-17 00:06:20
【问题描述】:

我正在尝试用另一个工作簿中的动态范围填充 ActiveX 组合框,但在分配范围的代码行上出现运行时错误“1004”应用程序或对象定义错误:

Dim prfile1 As String
Dim prfile2 As String
Dim filepath As String
Dim checktotal As Integer
Dim checkrng As Range
Dim emunber As String

prfile1 = Worksheets("setup").Range("B10").Value
prfile2 = Worksheets("setup").Range("B7").Value
filepath = Worksheets("setup").Range("e10").Value
emunber = Worksheets("ReprintOld").Range("V3").Value

Workbooks.Open filepath & prfile2
Windows(prfile2).Activate

checktotal = Workbooks(prfile2).Worksheets(emunber).Range("AE1")
checkrng = Workbooks(prfile2).Worksheets(emunber).Range(Range("U5"), Range("U5").End(xlDown))

【问题讨论】:

    标签: excel vba debugging combobox


    【解决方案1】:

    你需要限定你所有的Range对象。

    checktotal = Workbooks(prfile2).Worksheets(emunber).Range("AE1")
    
    With Workbooks(prfile2).Worksheets(emunber)
    
        Set checkrng = .Range(.Range("U5"), .Range("U5").End(xlDown))
    
    end with
    

    【讨论】:

    • 这现在给了我一个不同的错误 91:对象变量或未设置块变量
    • 嗯。工作簿 prfile2 是否打开? prfile2 是变量还是工作簿名称?如果是工作簿名称,则需要在双引号内,以及emunber。所以,With Workbooks("prfile2").Worksheets("emunber")。在模块顶部添加Option Explicit 也可以防止这种情况发生。
    • 工作簿已打开,是的,这些是工作簿和工作表的变量。此行之前的 checktotal 行没有错误
    • 好的,那么变量emunber是数据类型String还是数据类型Worksheet?当您分配emunber 的值/对象时,该行是什么样的?
    • emunber 是一个字符串emunber = Worksheets("ReprintOld").Range("V3").Value。这是一个根据列表框中的选择而更改的值,prfile2 包含以这些“V3”值命名的工作表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多