【问题标题】:Selected value in combo box to open another worksheet in Excel VBA/User form组合框中的选定值以在 Excel VBA/用户表单中打开另一个工作表
【发布时间】:2016-04-23 15:38:59
【问题描述】:

从组合框中选择值后如何应用另一种方法? 我在工作表“Home”中有一个名称列表,对于范围“C”中的每个名称,它们是一个链接的工作表,其中包含图像中提到的该名称的信息。

Excel sheet picture

我做了一个用户表单,其中包含一个组合框和一些引用用户名信息的标签,当我从组合框中选择用户名时,我需要 Excel 将打开该用户名的页面并检索信息从那里开始。

Userform

另外,我在从“主页”页面选择名称时遇到问题。我用了这段代码

cboUserList.List = wsHome.Range("c12", Range("c12").End(xlDown)).Value

但它显示对象'-Worksheet'的方法'范围'失败。

这是我的命令按钮“导入”的代码

Private Sub cmdImport_Click()

cboUserList.List = wsHome.Range("c12", Range("c12").End(xlDown)).Value

lstActivationDate.List = ActiveSheet.Range("h2", Range("h2").End(xlDown)).Value

lstPaidDate.List = ActiveSheet.Range("c2", Range("c2").End(xlDown)).Value

lblUserID.Caption = [f2]

lblsubscType.Caption = ActiveSheet.Range("i2").End(xlDown).Value

lblamount.Caption = ActiveSheet.Range("j2").End(xlDown).Value

lblamountpaid.Caption = ActiveSheet.Range("d2").End(xlDown).Value


lbldate.Caption = Format(Date, "dd-mmm-yyyy")

lbldebts.Caption = Range("f5:f6").Item(1).Value

lblNotes.Caption = [f13]


End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    让您的代码工作的一个想法:将 wsHome 也添加到第二个范围。 cboUserList.List = wsHome.Range("c12", wsHome.Range("c12").End(xlDown)).Value

    要填充组合框,请尝试使用cboUserList.AddItem(<String>)。循环遍历您的范围以将所有元素放入 ComboBox。或者尝试使用包含您的姓名的数组.List

    要切换到用户的工作簿,您必须在 userform 代码中使用这段代码:

    Private Sub cboUserList_Change()
         Worksheets(Cstr(wsHome.Range("c12", wsHome.Range("c12").End(xlDown)).Find(cboUserList.Value, LookIn:=xlValues).Offset(0, 1).Value)).Activate
    End Sub
    

    【讨论】:

    • 感谢 Freakfeuer 的 cboUserList.List = wsHome.Range("c12", wsHome.Range("c12").End(xlDown)).Value 代码现在可以正常工作,但关于所选值在组合框中,如何使此值打开链接到的工作表?
    • 我编辑了我的答案。我猜你要找的是Worksheets(X).Activate
    • 我使用了你的编辑代码 ' 但我将偏移行从 0 更改为 1 .offset(1,1) 并且它工作正常但是当我选择最后一个用户时我遇到了另一个问题位于 C311 中的名称显示运行时错误“9”范围下标。
    • 我猜 excel 将值解释为整数,因此使用工作表编号而不是名称(因此您的第二张工作表是编号 2 而名称是 “1”)。我非常确定您根本不需要行偏移(根据您的图片)。我在答案中添加了Cstr()。那应该将整数转换为字符串,因此使用名称。 @AhmedEjam
    • 我应用了您的代码,它运行良好,非常感谢,但还有一件事,我如何创建一个从“Alnoor-1”开始的自动收据编号,打印后此用户表单将增加到下一个数字“ Alnoor-2" 等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多