- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 1# av8d - Option Explicit '宣告變數的習慣要養成
- Dim d As Object
- '記得Dim d As Object 這要置於模組的頂端作為這模組的私用變數
- 'ComboBox2.List = Split(d(Val(ComboBox1.Value)), ",") 才會有答案
- Private Sub UserForm_Initialize()
- Dim A, AMonth As String
- Set d = CreateObject("Scripting.Dictionary")
- With ActiveSheet
- For Each A In .Range("a2", .[a2].End(xlDown))
- If d(Year(A.Value)) = "" Then
- d(Year(A.Value)) = Month(A.Value)
- Else
- AMonth = "," & d(Year(A.Value)) & "," '字典物件的item 前後加上 ,
- If InStr(AMonth, "," & Month(A.Value) & ",") = 0 Then '字典物件的item 中比對月份無重復
- d(Year(A.Value)) = d(Year(A.Value)) & "," & Month(A.Value) '字典物件的item 再加上 , 及月份
- End If
- End If
- Next A
- ComboBox1.List = d.keys
- End With
- End Sub
- Private Sub ComboBox1_Change()
- If ComboBox1.ListIndex > -1 Then
- TextBox9 = ComboBox1.Value
- ComboBox2.List = Split(d(Val(ComboBox1.Value)), ",")
- '字典物件的item 用Split以","轉換成陣列
- End If
- End Sub
複製代碼 |
|