標題:
[發問]
下拉VBA無法作動
[打印本頁]
作者:
man65boy
時間:
2018-12-28 14:47
標題:
下拉VBA無法作動
請教各位先進,工作表上的2層下拉(函數),基本上是OK的,但因為增加了新增一個 ComboBox和VBA程式後,2層下拉卻無法使用,本來增加VBA的功能是把下拉的驗證視窗變大,現在卻無法使用,如果僅使用例外單層下拉驗證(如把程式放在"正常的"工作表上),VBA的功能卻可用,請各位先進解惑,謝謝!
附檔:[attach]29853[/attach]
作者:
GBKEE
時間:
2018-12-29 15:00
本帖最後由 GBKEE 於 2018-12-30 07:40 編輯
回復
1#
man65boy
驗證視窗無法變大
修改你的VBA 試試看
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
'**Target > 事件所傳回的位置
If Not Intersect(Target, [a2:b2]) Is Nothing Then
Ex_ComboBox_list Target.Address(0, 0) '**呼叫程式 . 傳送參數
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 15
.Height = Target.Height + 3
.LinkedCell = Target.Address
'改用 List ****
'.ListFillRange = StrVdFml
'***************
.Visible = 1
.Object.SpecialEffect = 3
.Object.Font.Size = Target.Font.Size
Else
.Visible = False
End If
End With
End Sub
Private Sub Ex_ComboBox_list(Target As String) 'vu. 修改改用 List
Dim Ar(), i As Variant 'Sheet2
With Sheets("Sheet2").Range("A1") '**第一層的欄位向右的資料
Ar = Application.Transpose(Application.Transpose(Sheets("Sheet2").Range(.Cells, .Cells.End(xlToRight)).Value))
End With
Select Case Target
Case "A2"
ComboBox1.List = Ar
Case "B2"
i = Application.Match(Range("a2"), Ar, 0) '第一層的選擇** Match 傳回第二層的欄位
If IsError(i) Then ' '***** 防呆******
MsgBox IIf(Range("a2") = "", "A2 沒輸 入... ", Range("a2")) & vbLf & "--不在-- .." & vbLf & Join(Ar, ",")
ComboBox1.Clear
Else
With Sheets("Sheet2").Cells(2, i) '第二層的欄位的第二列
Ar = Sheets("Sheet2").Range(.Cells, .Cells.End(xlDown)).Value
End With
ComboBox1.List = Ar
End If
End Select
End Sub
複製代碼
作者:
man65boy
時間:
2019-1-1 22:27
回復
2#
GBKEE
謝謝GBKEE老師的幫忙修正,測試已可用,請問一下GBKEE老師,如果使用3層的下拉,也是要修改是吧!
作者:
GBKEE
時間:
2019-1-6 15:24
本帖最後由 GBKEE 於 2019-1-6 15:29 編輯
回復
3#
man65boy
抱歉 讓你久等
試試看
[attach]29875[/attach]
下載後先存檔案再開檔試試看
作者:
man65boy
時間:
2019-1-12 17:57
回復
4#
GBKEE
謝謝GBKEE大大熱心地回答,祝你新年快樂,順心健康!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)