返回列表 上一主題 發帖

利用VBA 表單製作萬年曆?

回復 15# GBKEE


    感謝大大解開我的疑惑
    原來我弄錯地方了
    沒注意到Class 物件類別模組裡面的程式碼
    搞不懂 OB是什麼意思

    剛剛是想在
    With Controls.Add("Forms.OptionButton.1", I) 裡面加入
    If .Visible = True Then
    Sheet1.Range("A1") = DateSerial(ComboBox1, ComboBox2, Day(I))
    End If
   
    但原本表單上面就沒有出現OptionButton
    所以天數那裡也不曉得怎麼用
    現在我知道了

    不過看來我還要繼續加油了...><
Jared

TOP

回復 14# Jared
物件類別模組 Class1
  1. Option Explicit
  2. Public WithEvents OB As MSForms.OptionButton
  3. Private Sub OB_Click()
  4.     'MsgBox OB.Caption
  5.     '年月日
  6.     Sheet1.[a1] = OB.ControlTipText
  7.     '日期
  8.     'Sheet1.[a1] = OB.Caption
  9. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 12# GBKEE


    想請問一下大大
    程式中當我點選日期的時候
    會跳出警告視窗
    告知你點選的是年月日

    那如果是要點選日期後就動作
    直接寫入指定欄位是要在哪裡撰寫呢?(例如:Sheet1.Range("A1"))
 由於表單頁面上的OptionButton都是隱藏的
    因此我添加程式不曉得寫哪裡
   
    希望大大解除我的疑惑
    感激不盡!><
Jared

TOP

回復 11# mark15jill


大大
後來發現運算式都錯了
計算出來的天數都不對....><
Jared

TOP

回復 9# Jared
  1. 這個月的第一天    DateSerial(ComboBox1, ComboBox2, 1)
  2. 這個月的最後一天 DateSerial(ComboBox1, ComboBox2.Value + 1, 0)
複製代碼
修改 5# 檔案 表單程式碼 如下
  1. Option Explicit
  2. Dim Class_OB(1 To 7, 1 To 6) As New Class1
  3. Private Sub UserForm_Initialize()
  4.     Dim I As Integer
  5.      日期項
  6.     For I = 1980 To 2099
  7.         ComboBox1.AddItem I
  8.     Next
  9.     ComboBox1.Value = Year(Date)
  10.     For I = 1 To 12
  11.         ComboBox2.AddItem I
  12.     Next
  13.     ComboBox2.Value = Month(Date)
  14. End Sub
  15. Private Sub ComboBox1_Change()
  16.     月曆
  17. End Sub
  18. Private Sub ComboBox2_Change()
  19.     月曆
  20. End Sub
  21. Private Sub 月曆()
  22.    月曆清除
  23.     If ComboBox1.ListIndex > -1 And ComboBox2.ListIndex > -1 Then 萬年曆
  24. End Sub
  25. Private Sub 萬年曆()
  26.     Dim R As Integer, I As Date, WD As Integer
  27.      R = 1
  28.      For I = DateSerial(ComboBox1, ComboBox2, 1) To DateSerial(ComboBox1, ComboBox2.Value + 1, 0)
  29.         WD = Weekday(I)
  30.         With Controls(R & "_" & WD)
  31.             .Enabled = True
  32.             .Caption = Day(I)
  33.             .ControlTipText = I
  34.         End With
  35.         If WD = 7 Then R = R + 1
  36.      Next
  37. End Sub
  38. Private Sub 日期項()
  39.     Dim OBtop As Integer, OBLeft As Integer, R As Integer
  40.     Dim OB_1 As Integer, OB_2 As Integer
  41.     R = Label1.Top + 30
  42.       For OB_2 = 1 To UBound(Class_OB, 2)
  43.         For OB_1 = 1 To UBound(Class_OB, 1)
  44.             With Controls.Add("Forms.OptionButton.1", OB_2 & "_" & OB_1)
  45.                 .Visible = True
  46.                 .Top = R '
  47.                 .Left = Controls("Label" & OB_1).Left
  48.                 'Controls("Label" & OB_1)->已建立星期之 Label控制項
  49.                 '名稱依序為Label1,Label2,Label3,Label4,Label5,Label6,Label7.
  50.                 .Height = 15
  51.                 .Width = 30
  52.                 .ControlTipText = ""
  53.             End With
  54.             Set Class_OB(OB_1, OB_2).OB = Controls(OB_2 & "_" & OB_1)
  55.         Next
  56.         R = R + 30
  57.      Next
  58. End Sub
  59. Private Sub 月曆清除()
  60.     Dim E As Control
  61.     For Each E In Me.Controls
  62.         If E.Name Like "*_*" Then
  63.             E.Enabled = False
  64.             E.Caption = ""
  65.             E.ControlTipText = ""
  66.         End If
  67.     Next
  68. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 9# Jared

你這問題有可能是 循環內 你弄錯參數..

例如
k=1
for hwe = 1 to 31

    me.controls("optionbutton"& hwe ) = hwe

next

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 7# GBKEE


    拍謝..  因為想說拍成一張 比較省空間...
下次會改建...

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 7# GBKEE


    回覆大大
    DAY_i 是如何設定的?
    DAY_i 就是OptionButton1 屬性NAME 改成DAY_1 ~42
       
是想利用For 迴圈去計算
最後在加上判斷式
計算出來的數字小於1或大於31就隱藏起來
但就是跑不過卡在這裡

    剛剛利用大大的回覆程式碼成功了(^口^)
     不過卻變成同一種數字....(u_u)
      
Jared

TOP

回復 5# GBKEE


    (0口0)...想請問大大
    為什麼畫面一開始都沒東西?
    是在哪一行程式宣告隱藏呢?
    程式中 宣告 好多沒見過的語法(@@)...
Jared

TOP

回復 6# Jared
但程式就判斷找不到DAY_i.Caption 這個成員....
沒有檔案看不到 DAY_i 是如何設定的,是這樣嗎?
  1. Controls("DAY_" & I).Caption
複製代碼
回復 4# mark15jill

圖片上的程式碼,需要有好眼力才看的到,何不代碼貼上來
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題