有幾個選項。
您可以在單元格中放置數據驗證下拉列表,而不是下拉對象。這將返回實際結果而不是索引。如果您還需要一個單獨鏈接的單元格,你可以把一個公式,簡單地複製DV電池
Sub MakeDv()
Dim wSheet As Worksheet
Dim myRng As Range
Set wSheet = ActiveSheet
Set myRng = wSheet.Cells(row, col)
myRng.Validation.Add xlValidateList, , , "msg1,msg2"
wSheet.Cells(row, col + 2).Formula = "=" & myRng.Address
End Sub
另一種選擇是不使用LinkedCell屬性和使用宏來寫的價值。將此宏分配給Dropdown
Sub ShowDDResult()
Dim dd As DropDown
Set dd = ActiveSheet.DropDowns(Application.Caller)
ActiveSheet.Cells(row, col + 2).Value = dd.List(dd.Value)
End Sub
如果您是從Access創建工作表,那麼您可能不太容易,因爲您必須添加宏。最後的選項是使用ListFillRange屬性來填充下拉菜單。列入名單的範圍和使用公式斷LinkedCell的拉日起出名單
Sub testdd()
Dim wSheet As Worksheet
Dim myRng As Range
Dim myDD As DropDown
Dim rList As Range
Dim aList(1 To 2, 1 To 1) As String
Set wSheet = ActiveSheet
Set rList = wSheet.Range("D1:D2")
Set myRng = wSheet.Cells(row, col)
aList(1, 1) = "msg1": aList(2, 1) = "msg2"
rList.Value = aList
With myRng
Set myDD = .Parent.DropDowns.Add(Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
myDD.ListFillRange = rList.Address
myDD.LinkedCell = wSheet.Cells(row, col + 2).Address
wSheet.Cells(row, col + 3).Formula = "=INDEX(" & rList.Address & "," & myDD.LinkedCell & ",1)"
End With
End Sub
哇,謝謝你,我會將al ook並回復你 – Rippo 2010-11-02 19:42:38
Option1爲我做到了!非常感謝您的詳細解答 – Rippo 2010-11-03 09:44:54