剛剛跟朋友討論到這題: 除了+-*/ mod \\ = ><^這些運算子以外,不得使用任何函數,陳述式,陣列,If~then,Select~case,for~Next,Do~Loop等等,輸入年份(西元),月份,就能算出該年當月份的最後一天是幾號,且須注意閏年與平年的問題。覺得這題挺有意思的,提出來討論,不知道各位大大有何看法?
2006-07-04 13:34:09 · 7 個解答 · 發問者 W.J.S. 7 in 電腦與網際網路 ➔ 程式設計
當然一開始時的InputBox跟判斷是否是數字及月份是否正確不在此限
2006-07-04 13:38:21 · update #1
To:Liu-Liu
你的做法跟我差不多,我想快要成功了,不過尚有一些錯誤,如:1000年應該是平年,你的程式出來是閏年XD!!
2006-07-04 19:30:26 · update #2
To: 愁痕飄絮兄
這樣比較有違原意似乎不恰當XD,況且輸入y=1000,m=12時會發生錯誤^^
2006-07-04 19:38:47 · update #3
To:鳳凰大大
應該可以,但基本上輸入的日期必須正確,否則就必須經過函數來轉換,如愁痕飄絮兄的方法雖然宣告為Date但沒經過DateSerial之類的函數還是會產生錯誤>
2006-07-04 19:50:52 · update #4
To:Liu-Liu
雞蛋裡挑骨頭一下,題目規定只能有+-*/ mod \\ = >
2006-07-04 20:03:46 · update #5
給Liu-Liu:
果然利害一下子就解出來真神>*
2006-07-05 08:27:32 · update #6
除了 + - * / Mod \ = > < ^ 這些運算子以外,還可以用些什麼?
連基本的判斷式(If ... then)都不能使用了,還能求得解答嗎?
2006-07-04 21:42:13 補充:
Title = "計算當月的最後一天"y = InputBox("請輸入西元年份", Title)m = InputBox("請輸入月份", Title)d = 30 + ((m + (m > 7)) Mod 2) + 2 * (m = 2) - ((y Mod 4 = 0) And (m = 2))MsgBox "最後一天為 " & d & " 號", , y & " 年 " & m & " 月的最後一天"
2006-07-05 08:55:55 補充:
我就知道你一定會挑出 And (昨晚睡覺時想到的),基本上 And 就是 *,所以也不成問題。程式碼修正後,外加修正閏月的問題,其修正如下:d = 30 + ((m + (m > 7)) Mod 2) + 2 * (m = 2) + ((y Mod 4 = 0) * (m = 2)) + ((m = 2) * (y Mod 100 = 0) * (y Mod 400 <> 0))
2006-07-05 20:12:22 補充:
這也是沒辦法的事情呀!誰叫 And 與 * 是一樣的!
2006-07-05 20:14:41 補充:
這個是經過整理的運算式,與原式相同,只是再簡化而已:d = 30 + ((m + (m > 7)) Mod 2) + (2 + (y Mod 4 = 0) + (y Mod 100 = 0) * (y Mod 400 <> 0)) * (m = 2)
2006-07-04 17:42:13 · answer #1 · answered by 世賢 7 · 1⤊ 0⤋
不好意思 我的寄信點數用完了 所以在此打擾 謝謝
你好我看了您滿懂access的
我想跟你請教
我想做進出貨
我做了子表單 代表 訂單明細
我的庫存是用 查詢來做 進貨-出貨=庫存(是查詢的計算欄位)
現在我在 子表單的[數量]掛上屬性vba 想要用dlookup來比較這個[數量] 比 庫存
請問我如何在vba中呼叫這個查詢的計算欄位 或者 在vba中如何叫用巨集啊?
謝謝
2009-04-27 12:48:04 · answer #2 · answered by ? 2 · 0⤊ 0⤋
看法????
頭都快爆了 還能有啥看法 XD
2006-07-05 09:14:21 補充:
看了一下之前各位大大的發言 發現一個驚人的事實在下真的不太會用邏輯運算來寫這個題目 Orz......不過還是硬著頭皮,以自己的想法寫出了上面的程式還請多多指教 ^^total = 30 '設定基本天數'===============以平潤年來判斷2月天數的減少量===============A1 = ((400 - (Y Mod 400)) \ 400)A2 = (1 - ((100 - (Y Mod 100)) \ 100))A3 = ((4 - (Y Mod 4)) \ 4)a = 1 - ((3 - (A1 + A2 * A3)) \ 3) - 2 '潤年2月少一天,平年2月少兩天'===========================================================b = (11 - ((M + 9) Mod 11)) \ 11 '判斷是否為2月c = (((((((M - 7.5) ^ 2) ^ (1 / 2)) - 0.5) Mod 2 - 1) ^ 2) ^ (1 / 2)) '判斷大小月的天數變動,大月+1,小月+0total = total + a * b + c
2006-07-05 09:18:57 補充:
話說.....
不能用And 那........
和And用法相同的 & 和 * 應該也不能用.....
同理的話....Or 呢 ???
2006-07-05 05:14:21 · answer #3 · answered by ? 5 · 0⤊ 0⤋
這樣的回答有沒有違反原則@@? Dim dt As Date y = InputBox("輸入西元年") m = InputBox("輸入月") dt = y & "/" & (m + 1) & "/" & 1 Print dt - 1
2006-07-05 07:57:12 補充:
修正如下: Dim dt As Date y = InputBox("輸入西元年") m = InputBox("輸入月") dt = (y - (m = 12)) & "/" & (m Mod 12) + 1 & "/" & 1 Print dt - 1
2006-07-05 08:57:37 補充:
繼剛才修正後,奮鬥了一小時,也參考Liu大的程式碼,改寫如下,不知是否正確,還請WJS大挑一下
2006-07-05 08:57:58 補充:
y = InputBox("輸入西元年") m = InputBox("輸入月") d = 30 + ((m + (m > 7)) Mod 2) '大小月 d = d + 2 * (m = 2) '是否為2月 chk = (y Mod 4 = 0) + (y Mod 100 = 0) + (y Mod 400 = 0) '是否為閏年 chk = chk Mod 2 d = d - chk Print "西元"; y; "年"; m; "月的"; "最後一天為 "; d
2006-07-05 08:58:24 補充:
經過這題的洗禮後,讓我對這些運算方法熟悉了不少呢 :D
2006-07-05 09:00:33 補充:
最佳解答請選給Liu大,我只是來插花學習的 , :D
2006-07-04 18:17:24 · answer #4 · answered by ? 6 · 0⤊ 0⤋
VB的DateTime型別不能做加一個月減一天的運算嗎?@@
2006-07-04 18:09:03 · answer #5 · answered by Phoenix 5 · 0⤊ 0⤋
W.J.S.大大 可以到小雄資訊服務中心VB研究小站拋磚引玉一下喔
2006-07-04 13:53:02 · answer #6 · answered by 鳴 5 · 0⤊ 0⤋
月島大:偷你的[拋磚引玉]來用,別介意^^
2006-07-04 18:17:41 補充:
呵呵!鳴大我在這裡朋友多,到那裡人生地不熟的怕沒人理我><
2006-07-05 12:43:56 補充:
TO:月島大
ㄚ我說And是違法你就說*也不可以,ㄚ嘸你是要來踢館的ㄡ ⊙|⊙∥
2006-07-04 13:43:50 · answer #7 · answered by W.J.S. 7 · 0⤊ 0⤋