User Tools

Site Tools


blog:2025-05-13-001



2025-05-13 Excel 已建立一個下拉式選單 如何取得目前是選到第幾個選項

  • 在 Excel 中,如果已經建立了一個下拉式選單(通常是透過「資料驗證」功能),可以透過 VBA(Visual Basic for Applications)或公式來取得目前選到的選項是第幾個。以下是幾種方法:

方法 1:使用公式

  • 如果不熟悉 VBA,可以使用 Excel 的公式來達成這個目的。假設你的下拉式選單在單元格 A1,而選項來源是一個範圍(例如 B1:B5),你可以使用 MATCH 函數來找出選到的選項是第幾個。
  • 步驟:
  • 在另一個單元格(例如 C1)輸入以下公式:
  • =MATCH(A1, B1:B5, 0)
  • 這個公式會返回 A1 中選取的值在範圍 B1:B5 中的位置(即第幾個選項)。
  • 注意:
    • 如果下拉選單的來源不是一個範圍,而是手動輸入的選項(例如「選項1,選項2,選項3」),需要在某個地方先列出這些選項,然後引用該範圍。
    • 如果選項不在來源範圍中,公式會返回錯誤。

方法 2:使用 VBA

  • 如果熟悉 VBA,可以用程式碼來取得下拉選單的選項索引。以下是一個簡單的 VBA 腳本:
  • 步驟:
    • 按下 Alt + F11 開啟 VBA 編輯器。
    • 在左側的專案視窗中,找到你的工作簿,插入一個新的模組(右鍵點擊 > 插入 > 模組)。
    • 在模組中貼上以下程式碼:
      • Sub GetDropdownIndex()
            Dim dropdown As DropDown
            Dim selectedIndex As Long
            
            ' 假設下拉選單在 Sheet1 的 A1 單元格
            Set dropdown = Sheet1.DropDowns("Drop Down 1") ' 請確認下拉選單的名稱
            selectedIndex = dropdown.ListIndex
            
            ' 如果有選取項目,顯示索引;否則顯示未選取
            If selectedIndex > 0 Then
                MsgBox "目前選到的選項是第 " & selectedIndex & " 個"
            Else
                MsgBox "未選取任何選項"
            End If
        End Sub
    • 關閉 VBA 編輯器,返回 Excel。
    • 按下 Alt + F8,選擇 GetDropdownIndex 巨集並執行。
  • 注意:
    • 需要確認下拉選單的具體名稱(可以在 VBA 編輯器中查看,或在 Excel 中選取下拉選單後查看「名稱」欄位)。
    • 如果下拉選單是透過「資料驗證」建立的,而不是表單控制項,則需要使用不同的方法來取得值(如下方方法 3)。

方法 3:資料驗證下拉選單的 VBA 處理

  • 如果下拉選單是透過「資料驗證」功能建立的,可以直接讀取單元格的值並比對來源範圍。
  • VBA 程式碼:
  • Sub GetDataValidationIndex()
        Dim cell As Range
        Dim sourceRange As Range
        Dim selectedValue As String
        Dim index As Long
        
        ' 假設下拉選單在 Sheet1 的 A1 單元格
        Set cell = Sheet1.Range("A1")
        selectedValue = cell.Value
        
        ' 假設下拉選單的來源範圍是 B1:B5
        Set sourceRange = Sheet1.Range("B1:B5")
        
        ' 找出選取值在來源範圍中的位置
        index = Application.Match(selectedValue, sourceRange, 0)
        
        ' 顯示結果
        If Not IsError(index) Then
            MsgBox "目前選到的選項是第 " & index & " 個"
        Else
            MsgBox "未選取任何選項或值不在來源範圍中"
        End If
    End Sub
  • 執行方式:
    • 按下 Alt + F8,選擇 GetDataValidationIndex 巨集並執行。

總結

  • 如果不熟悉程式碼,建議使用 方法 1(公式),簡單且不需要額外設定。
  • 如果需要自動化處理或更複雜的功能,建議使用 方法 2 或 3(VBA),根據下拉選單類型(表單控制項或資料驗證)選擇適當的程式碼。
  • 記得根據實際單元格位置和範圍調整上述程式碼或公式。

TAGS

  • 22 person(s) visited this page until now.

blog/2025-05-13-001.txt · Last modified: 2025/05/13 14:28 by jethro