2012-06-13 51 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