返回列表 上一主題 發帖

利用VBA 表單製作萬年曆?

利用VBA 表單製作萬年曆?

想請問各位大大
如果我想利用VBA表單功能來製作萬年曆
但就是不知道如何著手

網路上能搜尋到的資源
都是利用函數在Sheet 上面運算
有試過轉移到表單上面去執行

卻不知道少了什麼
表單的配置如下


希望有高人指點迷津,感激不盡>"<
Jared

回復 19# mark15jill


    (@@)...好多Dim
    看得眼花撩亂...
    建議可以用簡單的A、B、C、D來命名(u_u)
Jared

TOP

回復  mark15jill
你好像繞了一圈.
回復  mark15jill
製作陽曆萬年曆與潤2月是沒有關係的
GBKEE 發表於 2013-3-27 13:17



    感謝 兩位大大的教導,小弟受教了。

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

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

  少看=只看不做也枉然

TOP

本帖最後由 GBKEE 於 2013-3-27 13:33 編輯

回復 19# mark15jill
你好像繞了一圈.
回復 21# mark15jill
製作陽曆萬年曆與潤2月是沒有關係的
  1. Sub Ex()
  2.     Dim D As String
  3.     D = "2013/2/21"
  4.     MsgBox D & " 後一天 " & DateSerial(Year(D), Month(D) + 1, 0)
  5.     '每月的後一天
  6.     MsgBox Format(D, "aaa")
  7. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 21# mark15jill
OFFICE 2010以後已經取消了日曆控制項元件
計算星期幾?與閏年無關,因為Windows是以序列號計算日期,而星期就是以7天為一循環
至於農曆閏年,規則太過複雜,必須配合節氣計算,個人才疏學淺無法提出具體做法
學海無涯_不恥下問

TOP

回復  mark15jill

萬年曆在現在的系統內已經是內建了
不用VBA日期函數計算星期幾,直接用基準日期間距 ...
Hsieh 發表於 2013-3-27 09:37



    Heish大大 ,印象中,好像2003 還是2007 還是2010 沒有所謂的 日曆  這元件..
    另外,若用 不用VBA日期函數計算星期幾,直接用基準日期間距 ...  
     很容易產生,潤2月的情形。
     而且 若是又牽扯到 需要製作農曆萬年曆,那會有 潤農曆月的問題
      呵呵

        抱歉,小弟無知,多言了。

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

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

  少看=只看不做也枉然

TOP

本帖最後由 Hsieh 於 2013-3-27 09:46 編輯

回復 19# mark15jill

萬年曆在現在的系統內已經是內建了
不用VBA日期函數計算星期幾,直接用基準日期間距來算就對了
系統支援最小日期1900/1/1是星期日其日期序列號為1
  1. d = CDate(InputBox("輸入完整西元日期字串", , Date))
  2. MsgBox IIf((d - 1) Mod 7, (d - 1) Mod 7, 7)
複製代碼
學海無涯_不恥下問

TOP

回復  mark15jill
     星期錯亂: 你是用何函數
傳上程式碼看看
GBKEE 發表於 2013-3-26 17:02





    任何高深函數都沒用到... XDD

            Dim K1, K2, K3 As Integer
            Dim yy, dd, mm, wek, dss, dds31, dds30, dds2, dds28, dds29 As Integer
            Dim uny, unm, und, unym, unmd As String
            Dim weeks(6) As String

            DTP1 = DaTiPi.Text
            uny = InStr(DTP1, "年") - 1 : unm = InStr(1, DTP1, "月") : und = InStr(DTP1, "日") - 1
            unym = Mid(DTP1, uny + 1, unm - 5) : unmd = Mid(DTP1, unm + 1, und - 1)

            K1 = InStr(1, DTP1, "年") : K2 = InStr(1, DTP1, "月") : K3 = InStr(1, DTP1, "日")

            yy = Mid(DTP1, 1, K1 - 1) '年
            mm = Mid(DTP1, K1 + 1, (K2 - K1) - 1) '月
            dd = Mid(DTP1, K2 + 1, (K3 - K2) - 1) '日
            dss = 30 + ((mm + (mm > 7)) Mod 2) + (2 + (yy Mod 4 = 0) + (yy Mod 100 = 0) * (yy Mod 400 <> 0)) * (mm = 2) '日 二月專用
            dds31 = 31 : dds30 = 30  'dds 為  31日 和 30日
            dds2 = dss '日 二月專用

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

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

  少看=只看不做也枉然

TOP

回復 17# mark15jill
   
<天數對  星期錯亂>
星期錯亂: 你是用何函數
傳上程式碼看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復  mark15jill


大大
後來發現運算式都錯了
計算出來的天數都不對....>
Jared 發表於 2013-3-26 14:09



關於天數
這個我後來有發現
而且神奇的是....

我用VB.NET 和VBA  用同 計算式去跑..
結果VB.NET 完全正確..
VBA會莫名其妙錯亂..<天數對  星期錯亂>

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

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

  少看=只看不做也枉然

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題