2017-01-31 14 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