- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
2#
發表於 2018-1-15 08:49
| 只看該作者
本帖最後由 GBKEE 於 2018-1-15 08:51 編輯
回復 1# afu9240
有延伸的問題可在這主題繼續的發問(節省論壇資源)
UserForm1 請修改如上圖
UserForm1 電費查詢的程式碼- Option Explicit
- Dim ComboBox元素(), Sh As Worksheet
- Private Sub UserForm_Initialize()
- MultiPage1.Value = 0
- End Sub
- Private Sub ComboBox4_Change() '使用單位
- 電費查詢準則
- End Sub
- Private Sub ComboBox6_Change() '計費地址
- 電費查詢準則
- End Sub
- Private Sub ComboBox7_Change() '計費週期
- 電費查詢準則
- End Sub
- Private Sub MultiPage1_Change()
- If MultiPage1.Value = 2 Then 電費查詢ComboBox
- End Sub
- Private Sub 電費查詢ComboBox()
- Dim i As Integer, xRng As Range
- ComboBox元素 = Array(ComboBox4, ComboBox7, ComboBox6) '*** 控制項置於 陣列中**
- Set Sh = Sheets("電費")
- With Sh
- Set xRng = .Cells(1, Columns.Count) '工作表最右邊的儲存格
- For i = 0 To UBound(ComboBox元素)
- xRng.EntireColumn.Clear '整欄清除
- .Columns(i + 1).AdvancedFilter xlFilterCopy, , .Cells(1, Columns.Count), True
- '**進階篩選 xlFilterCopy, **(空白為不指定參數值)** , .Cells(1, Columns.Count), True
- xRng.Cells(Rows.Count).End(xlUp).Offset(1) = "查看全部"
- With ComboBox元素(i)
- .List = Range(xRng.Cells(2), xRng.Cells(Rows.Count).End(xlUp)).Value
- '** List: ComboBox 或 ListBox 清單的來源,可指工作表儲存格範圍的值
- .Value = .List(.ListCount - 1) '**List最後一個元素
- End With
- Next
- xRng.EntireColumn.Clear
- End With
- End Sub
- Private Sub 電費查詢準則()
- Dim i As Integer, Msg As Boolean, Rng As Range, Ar()
- Sh.Cells(1, Columns.Count) = ""
- Set Rng = Sh.Cells(1, Columns.Count)
- Ar = Sh.Range("A1:C1").Value '**=Array("使用單位","計費週期","計費地址")
- Sheets("工作表3").Range("a1").CurrentRegion.Clear
- '**Range.CurrentRegion 傳回 Range 物件,該物件代表目前的區域。目前區域是指以任意空白列及空白欄的組合為邊界的範圍。
- For i = 0 To UBound(ComboBox元素)
- If ComboBox元素(i).ListIndex > -1 Then
- If Rng.Text <> "" Then Set Rng = Rng.Cells(, 0)
- Rng = Ar(1, i + 1)
- Rng.Cells(2) = ComboBox元素(i)
- If ComboBox元素(i).ListCount - 1 = ComboBox元素(i).ListIndex Then Rng.Cells(2) = "<>"
- '查看全部 時 準則條件為 <>
- 'ListCount => 1 到 元素的總數 ,ListIndex =>0 元素的總數-1
- End If
- Next
- If Rng <> "" Then
- Set Rng = Range(Rng, Rng.End(xlToRight)).Resize(2)
- Sh.Range("a1").CurrentRegion.AdvancedFilter xlFilterCopy, Rng, Sheets("工作表3").Range("a1")
-
- End If
- Set Rng = Sheets("工作表3").Range("a1").CurrentRegion
- 'RowSource 屬性 指定 ComboBox 或 ListBox 清單的來源。
- With ListBox1
- .RowSource = ""
- .Clear
- .TextAlign = fmTextAlignCenter
- .RowSource = Rng.Address(, , , 1, 1)
- If Rng.Rows.Count > 1 Then
- .ColumnCount = Sh.Range("a1").CurrentRegion.Columns.Count '指定顯示的欄位數
- .RowSource = Sheets("工作表3").Range("a1").CurrentRegion.Address(, , , 1, 1)
- .Font.Size = 12
- Else
- .RowSource = ""
- .Font.Size = 48
- .ColumnCount = 1
- .AddItem "查無資料"
- End If
- End With
- End Sub
複製代碼 |
|