vba 取得定義名稱列數

小弟想要取得定義名稱的列數,當作二段式下拉選單的範圍,

ActiveWorkbook.Names("si") =Sheet2!$C$107:$J$116

想取得定義名稱的值為107及116,供第二段的下拉式選單讀取

但是取得的值輸入後,會有1004的錯誤碼,錯誤碼說明看不大懂

只知道新增On Error Resume Next 可以解決

小弟新增後部份可以解決,但是也會讀取到不必要的列數

可否請問各位大大有沒有別個方法可以讀取定義名稱

With worksection

If OptionButton13.Value = True Then

On Error Resume Next

For X = VBA.Val(Mid(ActiveWorkbook.Names("si"), 12, 3)) To VBA.Val(Right(ActiveWorkbook.Names("si"), 3))

If .ComboBox3.Value = Worksheets("id").Cells(X, 2).Value Then

For i = 1 To WorksheetFunction.CountA(Sheets("id").Rows(X))

.ComboBox4.additem Worksheets("id").Cells(X, 2 + i).Value '設備編號

Next i

End If

Next X

End If

end with

Update:

感謝沙大的回答,原來方向用錯了

Update 2:

可以問別題嗎??

活頁簿中有25個切換按鈕,可以一次設定全部切換按鈕切換時所觸發的事件嗎?

不需要透過一個一個事件的建立

不知道要放在何種活頁簿事件下

Worksheet_SelectionChange還是需要再點別處才行

Update 3:

For d = 3 To 28

With Me.OLEObjects("ToggleButton" & d).Object

If .Value = True Then

.Caption = Worksheets("TC").Cells(d - 1, 1)

Else

.Caption = Worksheets("TC").Cells(d - 1, 2)

End If

End With

Next

Update 4:

感謝沙大再次的解答,

小弟想說的就是3~28的ToggleButton 觸發Click 事件時,執行以上的程式,

必須知道是那個 ToggleButton 觸發的,這個要如何下呢??

1 Answer

Rating
  • 10 years ago
    Favorite Answer

    如果名稱 si 是定義一個儲存格區域

    Range("si").Row 會傳會第一個儲存格的列號

    Range("si").Row + Range("si").Rows.Count - 1 便會傳會最後一個列號

    2010-03-03 21:41:36 補充:

    活頁簿的同一個工作表內有 25 個 ToggleButton

    任何一個 ToggleButton 點選下去都會觸發「同一個事件」嗎?

    如果能這樣的話,那就太神奇~問到這樣的答案拜託順便告訴我作法

    我想如果是自建 Class 好像也沒法度吧!

    或者說

    活頁簿的同一個工作表內有 25 個 ToggleButton

    任一個 ToggleButton 觸發 Click 事件時(會有25個事件)可以執行同一段程式碼(程式碼只有一個),但是必須知道是那個 ToggleButton 觸發的?

    如果是這樣的話就可以辦得到的。

    2010-03-03 23:18:11 補充:

    底下是工作表物件內的程式碼,執行前該工作表必須有三個名稱為 ToggleButton1、ToggleButton2、ToggleButton3 的切換按鈕。

    Private Sub ToggleButton1_Click()

    RunPro ToggleButton1

    End Sub

    Private Sub ToggleButton2_Click()

    RunPro ToggleButton2

    End Sub

    Private Sub ToggleButton3_Click()

    RunPro ToggleButton3

    End Sub

    Sub RunPro(tb As ToggleButton)

    With tb

    MsgBox "工作表 " & .Parent.Name & " 裡面位於 " & .TopLeftCell.Address(0, 0) & _

    " 與 " & .BottomRightCell.Address(0, 0) & " 內的 " & .Name & _

    " 已被觸發 Click 事件," & Chr(13) & Chr(13) & " 它目前的值是 " & .Value

    End With

    End Sub

    試試看是不是你要的功能。

Still have questions? Get your answers by asking now.