2012-06-13 63 views
4

我需要動態構建一個下拉列表,在將特定文本輸入單元格後,我執行一些SQL並從返回的行中構建一個Dropdown動態構建下拉列表?

事件如何集中在僅僅一個單元格的值上(而不是整個電子表格)?

我必須在創建Dropdown之前將SQL行值「粘貼」到電子表格中?是否可以在VBA中填充Dropdown而不必將值粘貼到電子表格上,然後突出顯示它們以創建Dropdown

感謝

回答

5

不,它是沒有必要的值粘貼在表來創建下拉列表。看到這個例子

Option Explicit 

Sub Sample() 
    Dim dvList As String 

    '~~> You can construct this list from your database 
    dvList = "Option1, Option2, Option3" 

    '~~> Creates the list in Sheet1, A1 
    With Sheets("Sheet1").Range("A1").Validation 
     .Delete 
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
     xlBetween, Formula1:=dvList 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "" 
     .ErrorTitle = "" 
     .InputMessage = "" 
     .ErrorMessage = "" 
     .ShowInput = True 
     .ShowError = True 
    End With 
End Sub 
+0

不錯,謝謝,現在你怎麼能自動選擇第一個選項? – Tizz

+1

@Tizz:'Sheets(「Sheet1」)。Range(「A1」)。value = split(dvList,「,」)(0)'?在'End With'之後加上這段代碼 –

+0

那是行得通的...我希望它會是某種List(0)...謝謝! – Tizz