我用
- 一個額外的範圍LOV(爲值列表)中隱藏工作表中,我填補了現行標準的用戶可以從中選擇(在我的情況下,這從行而異行,因爲他/她填充片)
- 在主表中的所有細胞是針對該範圍LOV驗證
- 一個Selection_Change()觸發後,從原始範圍的可能的選擇各光標移動加載LOV
這就是我重新生成我的LOV的方式(本質上用戶已經在字符串CtyCd中傳遞給另一個單元格的國家代碼中選擇了一個國家代碼,並且工作表現在已經預先準備好提供一些選擇,這些選擇只有GINI國家......所以也許類似於您的需求)
Sub LoadL2LOV(CtyCd As String, LOVL2 As Range)
'
' CtyCd is a selection criterium for the original list in range GINI
' LOVL2 is the target range containing the current list of values
' all cells in sheet have a validation against range LOV defined
'
Dim GINI As Range, Idx As Long, Jdx As Long, LName As Name, Adr As String
' clear current PoP_L2
Set LName = ActiveWorkbook.Names(LOVL2.Name.Name)
Set GINI = Worksheets("GINI Availability").Range("GINI")
LOVL2.ClearContents
' set new LOV for PoP_L2
If CtyCd <> "" Then
Idx = 2
Jdx = 1
' find 1st occurence of CtyCd in GINI
Do While GINI(Idx, 4) <> CtyCd And GINI(Idx, 4) <> ""
Idx = Idx + 1
Loop
' GINI is sorted, just read until the end of selected CtyCd
Do While GINI(Idx, 4) = CtyCd
LOVL2(Jdx, 1) = GINI(Idx, 1) & "-" & GINI(Idx, 2) & "-" & GINI(Idx, 3)
Idx = Idx + 1
Jdx = Jdx + 1
Loop
End If
' redefine LOV name to contain all current valid choices
LOVL2.CurrentRegion.Name = LOVL2.Name.Name
End Sub
在你的情況,因爲數據似乎或多或少是靜態的,你可以在Sheet_Activate或任何適當的距離[Prod_Release]所有的有效選擇複製到LOV激活觸發器。
希望這會有所幫助....祝你好運MikeD
謝謝MikeD。我希望找到一個沒有中間名單的方法。雖然我沒有想過預先計算。我會看看,如果我不能在這個想法。 – Peter 2011-05-24 04:14:59