在應用程序上工作時,我無法在列表框中獲取選定項目以實際輸出正確的行值。我正在使用.Selected
方法來選擇需要選擇哪一行,以便繼續下一步,這將從列表框中拉出綁定列的值以供進一步處理,而無需用戶與列表框進行交互。訪問VBA列表框方法。選中與.ItemData
事實證明,.Selected
與單擊列表框行不一樣,因爲它的輸出值仍然是最後一個「手動」選定行的綁定列值。
我意識到我必須採用.ItemData
方法跟進.Selected
方法,才能將列表框輸出值與我在.Selected
方法中選擇的行相等。
這裏是我以前賣方PN查找表上覆制選擇到的主要部分搜索表單代碼:
Private Sub cmdAddTofrmPartSearch_Click()
Dim i as Integer
... [truncated]
Forms("frmPartSearch").lstSearchResults.Selected(i - 1) = True
... [truncated]
Forms("frmPartSearch").txtHiddenPN.Value
= Forms("frmPartSearch").lstSearchResults.ItemData(i - 1)
...[truncated]
End Sub
如上,爲什麼我需要使用:
Forms("frmPartSearch").lstSearchResults.Selected(i - 1) = True
AND
Forms("frmPartSearch").txtHiddenPN.Value
= Forms("frmPartSearch").lstSearchResults.ItemData(i - 1)
要獲得txtHiddenPN
以接收正確的行值而不是簡單地settintin g txtHiddenPN
的控制源到=[lstSearchResults]
並且在.Selected
之後讓它更新爲行值?
.Selected
如果它不改變列表框的輸出值(除了手工操作,但是無意突出顯示一行),有什麼用?同樣,.ItemData
爲什麼不突出顯示正在輸出界限值的行?這是不好的設計,還是有另一種方法可以同時實現兩個結果?自動包含兩種方法是否是最佳做法?是否有隻需要調用一種方法的情況?
我是新來的VBA和編碼的一般,所以也許這是在該領域經常發生的事情,但它只是似乎鈍。