2017-01-31 15 views
0

我试图创建一个用户窗体,允许用户更新存储在特定工作表(称为问题列表)中的问题。我使用数据验证构建了一个下拉列表,允许用户从列表中选择唯一的问题名称。我在该下拉列表旁边创建了一个按钮,打开了用户窗体并正确导入了从下拉列表中标识的问题名称。Excel VBA - 将信息拉入用户表单以更新

我需要弄清楚的是,当用户表单被启动时,我如何让它在我的问题列表表单中搜索列B并确定哪一行包含用户选择的问题,并填充用户的字段形成问题清单表CX行中的信息。

我一直在尝试使用的是索引匹配函数,但是在获取代码的工作方面一直不成功。我一直在使用的一个例子是:

Resolved.Value = Application.WorksheetFunction.index 
('Issue List'!$X$2:$X$1000,Application.WorksheetFunction.match 
('Priority Table'!I35,'Issue List'!$B$2:$B$1000,0)) 

任何帮助将不胜感激。

在此先感谢!

回答

1

当您使用VBA工作表函数,你仍然在使用VBA语言的范围内传递:

所以不是:

'Issue List'!$X$2:$X$1000 

你可以使用:

Worksheets("Issue List").Range("X2:X1000") 

而不是:

'Priority Table'!I35 

只需使用:

Worksheets("Priority Table").Range("I35") 

请注意,您还可以通过名字,它可以使编码更容易,也更安全参考范围。在电子表格中插入行时,Excel不会自动更新任何VBA代码中的范围。对I35的引用将始终为I35。

取而代之,在Excel中为单元格I35定义一个正常的名称,然后在代码中引用它。

例如,如果你的名字I35为“问题”

您可以参考细胞:

Range("Issue") 

(如果它是一个全局变量,它是被默认的,只要它的工作簿中的一个独特的名字,你并不需要使用表(“优先级表”)限定符

请参阅本文档中有关如何从VBA参考范围在Excel中的详细信息: https://msdn.microsoft.com/en-us/library/office/gg192736(v=office.14).aspx