簡體   English   中英

如何在Excel中以編程方式創建下拉框?

[英]How can I create a drop-down box programmatically in Excel?

我有一個工作表,其中sheet1下拉了。 誰能告訴我如何在同一個電子表格的sheet3中下拉菜單,假設它具有名為sheet1,sheet2和sheet3的三個表。 該程序如下所示。

  Range("A1").Select

  With Selection.Validation

    .Delete

    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

    xlBetween, Formula1:="=$B$1:$B$3"/*Guess i need to make some change in this*/

    .IgnoreBlank = True

    .InCellDropdown = True

    .InputTitle = ""

    .ErrorTitle = ""


    .InputMessage = ""

    .ErrorMessage = ""

    .ShowInput = True

    .ShowError = True

  End With

非常感謝

使用錨作為您返回的記錄集的插入點定義一個動態的命名范圍

然后,在您希望具有下拉菜單的單元格中,鍵入=(named range name)-下拉選項將是從數據庫查詢返回的任何內容。

例:

使用公式=OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B$1:$B$20),1)將命名范圍定義為“ Options1” =OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B$1:$B$20),1)

設置數據庫查詢以將結果返回到單元格B1

選擇單元格A1並打開“驗證”對話框(“數據”>“驗證”)

選擇列表,然后輸入=Options1作為源

可以通過使用編程方式完成上述操作

ActiveWorkbook.Names.Add Name:="Options1", RefersTo:="=OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B$1:$B$20),1)"

With Range("A1").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Options1"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

當您在使用基本Excel功能進行下拉菜單(數據>驗證,然后選擇允許:列表)的同時記錄宏時,可以查看生成的代碼並根據自己的喜好對其進行編輯。 之后,您可以重新使用代碼。

從$ B $ 1:$ B $ 3創建一個“命名范圍”,然后在公式中使用命名范圍。 如果不想使用命名范圍,請在公式中指定工作表名稱,如= Sheet1!$ B $ 1:$ B $ 3。

有關在工作簿中命名單元格的幫助,請參閱“在工作簿中命名單元格”幫助主題,並查看“命名單元格或單元格區域”部分。

如果用於填充下拉列表的數據存在於每個工作表中,則可以選擇每個工作表並添加驗證。 請參見下面的代碼。

Sub Dropdowns1()

With Worksheets("Sheet1").Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$B$1:$B$3"
End With

With Worksheets("Sheet3").Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$B$1:$B$3"
End With

End Sub

如果用於填充下拉列表的數據僅存在於sheet1上 ,則需要首先創建一個引用該數據的命名范圍,然后使用該命名范圍來填充下拉列表。

下面的代碼創建一個命名范圍MyList ,該范圍引用Sheet1上的范圍B1:B3 然后,它使用Sheet1Sheet3上的命名范圍來填充下拉列表。

Sub Dropdowns2()

ActiveWorkbook.Names.Add Name:="MyList", RefersTo:="=Sheet1!$B$1:$B$3"

With Worksheets("Sheet1").Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=MyList"
End With

With Worksheets("Sheet3").Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=MyList"
End With

結束子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM