返回列表 上一主題 發帖

請高手指點一下,如何做出動態的行事曆及雙擊選擇輸入的功能?

請高手指點一下,如何做出動態的行事曆及雙擊選擇輸入的功能?

請高手指點一下,如何做出動態的年曆及雙擊選擇輸入的功能?

如附件

https://dl.dropboxusercontent.com/u/12575824/%E8%A1%8C%E4%BA%8B%E6%9B%86.xls

我需要一個日期輸入的功能,目前外觀大致上就像附件這樣。

我要在輸入頁 , 選擇一個 儲存格(基本上是 日期欄 下面),按下快速鍵後,會跳到年曆這一頁。(這部份應該ok)

年曆這一樣,我希望第一行第一個,是上個月,第二以才是 today()所在的月份。以此顯示12個月份。

一、因今天的月份會變,所以整個會變成是動態調整。請指教,這樣的功能該如何下手?

二、雙擊儲存格,會將該日期寫到輸入頁,選擇的儲存格之中。如果無法雙擊,改用快速鍵輸入也是可以。
目前不知道該如何做到這樣的功能,請指令一下。

三、目前年曆的 2013-12 2014-1~2014-10 這幾個是用 today() - 30 -60 -90-120 -150 ... 這樣的『爛』方法做出來的
請指教,該怎麼做比較好~~
公開經驗,創造智慧(我又不靠這過活)

回復 12# stillfish00

最後的解法: =OFFSET($B$2,int((ROW()-4)/9)*9,int((COLUMN()-2)/8)*8,,)

用 int(a/b) 取代 quotient(a,b)

出問題的原因因該是 excel 2003 quotient 屬於增益集,非excel 本生的function.

出錯的原因應該是  quotient ( row()-4,9)  row()-4 算出來的值不是數字,is nonnumeric .

將quotient 用 int(a/b)取代之後就可以被 名稱定義取代。

換成更高版本應該就不會有這樣的怪現象。
公開經驗,創造智慧(我又不靠這過活)

TOP

本帖最後由 stillfish00 於 2013-12-17 00:09 編輯

回復 10# eigen
把乘的純數字換到前面看看,
month_first_day   =OFFSET(月曆!$B$2,9*QUOTIENT(ROW()-4,9),8*QUOTIENT(COLUMN()-2,8),,)

也可能是版本不同關係,所以看到結果不同吧....

TOP

回復 10# eigen
我到定義名稱中把
month_first_day   =OFFSET(月曆!$B$2,QUOTIENT(ROW()-4,9)*9,QUOTIENT(COLUMN()-2,8)*8,,)
的月曆!刪掉,雖然會自己復原,但是值就正確了....

我也不知道為什麼...

TOP

回復 9# stillfish00


Dear Sir,
麻煩再幫一下

如附件
https://dl.dropboxusercontent.com/u/12575824/%E8%A1%8C%E4%BA%8B%E6%9B%86.xls

quotient 到底是那出了問題?
公開經驗,創造智慧(我又不靠這過活)

TOP

回復 7# eigen
我用2樓定義名稱沒問題啊!
month_first_day
=OFFSET($B$2,QUOTIENT(ROW()-4,9)*9,QUOTIENT(COLUMN()-2,8)*8,,)

calc_day
=IF(MONTH(month_first_day)<>MONTH(month_first_day-(WEEKDAY(month_first_day,1)-1)+ MOD(ROW()-4,9)*7 +MOD(COLUMN()-2,8)),"",month_first_day-(WEEKDAY(month_first_day,1)-1)+ MOD(ROW()-4,9)*7 +MOD(COLUMN()-2,8))

TOP

回復 6# GBKEE

我試過 Ex Target, Target.Parent



雙擊時target 變成 1/23/2014 經過格式化的值而不是 41662 ,以致於後面我的檢查程序都無法運作。

日曆上的日期都是正確的日期,只是透過儲存格格式 自定成 DD 或 YYYY-MM ,原始資料都還是 數值

利用這樣的特性,我在雙擊儲存格時,我就知道使用者點擊的是不是日期。
公開經驗,創造智慧(我又不靠這過活)

TOP

回復 6# GBKEE


   呵~~我的眼力也很差,寫的時候,我是用 ultraedit 一段一段拼出來後,才貼到 excel

目前我用眼不見為淨的方式,儲存格格式->保護->隱藏 加上工具->保護 將公式隱藏起來(不然一點儲存格,整個畫面#$$^%)
公開經驗,創造智慧(我又不靠這過活)

TOP

回復 4# eigen
  1. '工作表模組:雙擊儲存格程式
  2. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  3.     Ex Target, Target.Parent
  4.     'Sub Ex 的程式碼中
  5.     'With Rng.Resize(, 7)    '日期的範圍
  6.     '   .Merge               '合併為儲存格
  7.     '*** -> Target.Resize(, 7)  合併為儲存格  ****
  8.     '***    原本的位置當你再次,雙擊儲存格,看看有何變化
  9. End Sub
複製代碼
這工作表函數落落長,眼力不好,有請眼力好者,幫幫忙.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

追求完全的最後一關,將右側表列的休假日,在左側的月曆中,將字型改用紅色

如附件
https://dl.dropboxusercontent.com/u/12575824/%E8%A1%8C%E4%BA%8B%E6%9B%86.xls

因為日期都是用算的,位置不固定,我不知如何下手

就算用 『設定格式化的條件』也只能有三個條件,無法將數十個日期加上去,請高手指點~~謝謝
公開經驗,創造智慧(我又不靠這過活)

TOP

        靜思自在 : 慈悲沒有敵人,智慧不起煩惱。
返回列表 上一主題