Board logo

標題: [發問] 如何讓日期欄位的年僅對應該月(已解決) [打印本頁]

作者: av8d    時間: 2012-7-11 12:14     標題: 如何讓日期欄位的年僅對應該月(已解決)

本帖最後由 GBKEE 於 2012-7-11 16:20 編輯

[attach]11640[/attach]

如何讓ComboBox1選到2012的時候ComboBox2僅顯示6月7月
ComboBox1選到2013的時候ComboBox2僅顯示8月9月

因為資料2012年只有6月7月所以僅顯示該年的月
作者: GBKEE    時間: 2012-7-11 14:31

回復 1# av8d
  1. Option Explicit          '宣告變數的習慣要養成
  2. Dim d As Object
  3. '記得Dim d As Object 這要置於模組的頂端作為這模組的私用變數
  4. 'ComboBox2.List = Split(d(Val(ComboBox1.Value)), ",") 才會有答案
  5. Private Sub UserForm_Initialize()
  6.     Dim A, AMonth As String
  7.     Set d = CreateObject("Scripting.Dictionary")
  8.     With ActiveSheet
  9.         For Each A In .Range("a2", .[a2].End(xlDown))
  10.           If d(Year(A.Value)) = "" Then
  11.             d(Year(A.Value)) = Month(A.Value)
  12.           Else
  13.             AMonth = "," & d(Year(A.Value)) & ","                          '字典物件的item 前後加上 ,
  14.             If InStr(AMonth, "," & Month(A.Value) & ",") = 0 Then          '字典物件的item 中比對月份無重復
  15.                 d(Year(A.Value)) = d(Year(A.Value)) & "," & Month(A.Value) '字典物件的item 再加上 , 及月份
  16.             End If         
  17.           End If
  18.         Next A
  19.         ComboBox1.List = d.keys
  20.     End With
  21. End Sub
  22. Private Sub ComboBox1_Change()
  23.     If ComboBox1.ListIndex > -1 Then
  24.         TextBox9 = ComboBox1.Value
  25.         ComboBox2.List = Split(d(Val(ComboBox1.Value)), ",")
  26.         '字典物件的item 用Split以","轉換成陣列
  27.     End If
  28. End Sub
複製代碼

作者: av8d    時間: 2012-7-11 16:09

本帖最後由 av8d 於 2012-7-11 16:27 編輯

回復 2# GBKEE


    請問大大~

如果我新增了一個ComboBox3,為了顯示D欄,該如何插入?
原本沒有ComboBox1,ComboBox2的時候是這樣子
Private Sub UserForm_Initialize()
    Dim d As Object, A
    Set d = CreateObject("Scripting.Dictionary")
    With ActiveSheet
        For Each A In .Range("d2", .[d2].End(xlDown))
          d(A.Value) = ""
        Next A
        ComboBox3.List = Application.Transpose(d.keys)
    End With
End Sub


如果新增一個ComboBox3和ComboBox4做搭配,該如何插入?
原本沒有ComboBox1,ComboBox2的時候是這樣子
Dim d As Object
Private Sub UserForm_Initialize()
    Dim A As Range, W As String
    Set d = CreateObject("Scripting.Dictionary")
    With ActiveSheet
        For Each A In .Range("d2", .[d2].End(xlDown))
            If d(A.Value) = "" Then
                d(A.Value) = A.Offset(, 1).Value
            Else
                 W = "," & d(A.Value) & ","   '字典物件內容前後加上 ,
                If InStr(W, "," & A.Offset(, 1) & ",") = 0 Then d(A.Value) = d(A.Value) & "," & A.Offset(, 1)
                'InStr(w, "," & A.Offset(, 1) & ",") = 0 比對字典物件內容有無A.Offset(, 1)的字串
            End If
         Next
         ComboBox3.List = d.KEYS
     End With
End Sub
作者: av8d    時間: 2012-7-11 16:37

回復 1# av8d


    [attach]11645[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)