Board logo

標題: 程式練習 [打印本頁]

作者: myleoyes    時間: 2012-4-8 17:29     標題: 程式練習

各位前輩你們好!
         前輩!!範例Q78要在顯示月入73時
              按Q80鈕才能執行查帳程式
              按鈕Q80這樣寫 If [Q78] > 0 Then 查帳 或
              If [Q78] <> "買未扣款" Or [Q78] <> "賣未入帳" Or [Q78] <> "帳戶" Then 查帳
              為何都無法達成需求呢?
              請問題程式為何?
              請知道的前輩,不吝賜教謝謝再三!!
作者: register313    時間: 2012-4-8 17:40

回復 1# myleoyes

活動廣告:
1.發問者請上傳EXCEL壓縮檔(小學生也可以)
2.配合EXCEL檔請把功能說明清楚

作者: myleoyes    時間: 2012-4-8 17:56

回復 2# register313
前輩!因為Excel.xls  if...有7層限制所以 範例無法儲成.xls格式
請2003版前輩見諒!!因此以動畫檔取代
作者: myleoyes    時間: 2012-4-8 18:18

回復 2# register313
前輩!!殆勢又忘了說明
               就是當Q78要在顯示月入73時
               按Q80鈕才能執行查帳程式
               原查帳程式就是附檔案內的查帳A
               只是開啟瀏覽器以便做轉帳動作罷!
               為何按鈕Q80這樣寫 If [Q78] > 0 Then 查帳 或
               If [Q78] <> "買未扣款" Or [Q78] <> "賣未入帳" Or [Q78] <> "帳戶" Then 查帳
               都無法達成需求呢?
作者: register313    時間: 2012-4-8 18:30

回復 4# myleoyes

If [Q78] = "月入73" Then 查帳
作者: myleoyes    時間: 2012-4-8 21:35

回復 5# register313
前輩!不能這樣寫的...因為Q78的數字隨著時間的流逝
而改變,假設5月份月入99時,那If [Q78] = "月入73" Then 查帳
不就凸槌囉!不是嗎?再麻煩指導謝謝再三!!
作者: register313    時間: 2012-4-8 22:13

回復 6# myleoyes

其實大大過去的一些問題,大部份都是簡單的
而重點在您設計的畫面乍看都很複雜,讓人一下子無法知道程式的前前後後

Q78的公式我看不到(我是OFFICE 2003)
從動畫看出Q78的部份公式:當今日的月份不等於明日的月份(也就是每個月月底),讓Q78產生 月入XX(XX是變動的數字)

整個功能只看出上述,所以這樣對嗎?
If Month(Now()) <> Month(Now() + 1) Then 查帳
作者: myleoyes    時間: 2012-4-9 12:01

回復 7# register313
前輩!謝謝!"大大如此稱呼"小弟實在擔當不起
     慚愧!慚愧!原本應該是將Q78的公式      
     改為03版適用公式,無奈小弟沒有用過
     03版也不知如何改,所以用動畫來詮釋
     在這幾種狀況下按Q80鈕是無效的
     要將檔案自動化原本就是煩雜的工程
     因而誤導你很抱歉!!
     借此機會請教導一下Q78公式
     =IF(P79>Q79,"賣未入帳",IF(Q79>P79,"買未扣款",IF(O78<>"交易區",Q79,IF(MONTH(TODAY())<>MONTH
(TODAY()+1),"月入"&ROUND(SUM(OFFSET(D68,0,(MONTH(TODAY())-1)*2,,),OFFSET(D69:E69,0,(MONTH(TODAY())-
1)*2,,),OFFSET(B70:C70,0,(MONTH(TODAY())-1)*2,,)),0),"帳戶"))))
     要如何改才能適用03版呢?以便銜接下一個問題辛苦你囉!謝謝再三!!
作者: register313    時間: 2012-4-9 15:08

本帖最後由 register313 於 2012-4-9 15:14 編輯

回復 8# myleoyes

這次應該要對了吧
X = [O78] = "交易區" And [Q78] <> "賣未入帳" And [Q78] <> "買未扣款" And [Q78] <> "帳戶" And Month(Now()) <> Month(Now() + 1)
If X Then MsgBox "查帳"  

Q78的公式(OFFICE 2003版)就不研究了
作者: myleoyes    時間: 2012-4-9 21:48

回復 9# register313
前輩!程式是對謝謝!但下一個問題Sub 增減資()
還是會用Q78公式所以只好請前輩下載自行修改Q78公式
作者: register313    時間: 2012-4-9 23:29

回復 10# myleoyes

TEMP = Right([Q78], Len([Q78]) - 2)
[Q79] = [Q79] - TEMP

Y = Year(Now()) - 2012
If Month(Now()) = 1 Then [CF3].Offset(Y, 0) = 300
[CF3].Offset(Y, 0) = [CF3].Offset(Y, 0) - TEMP

2段程式
但不知該放入 查帳 或 增減資
作者: myleoyes    時間: 2012-4-10 12:03

回復 11# register313
前輩!2段程式 但不知該放入 查帳 或 增減資
     小弟也迷糊囉!看說明(無法儲存檔案到 TEMP 目錄 (錯誤 735))
     也無法完全了解前輩的意思,那就依小弟的想法說明如下
     先說明附檔的程式與儲存格內容只適用模擬用途
     Case "Q80"必須如下程式才正確
             X = [O78] = "交易區" And [Q78] <> "賣未入帳" And [Q78] <> "買未扣款" And [Q78] <> "帳戶" And Month(Now()) <> Month(Now() + 1)
If X Then 查帳
     Sub 增減資()
         [CF3]原方式
         [CF3] = "=" & [CF3] & "-" & [Q78]
         執行後CF3=240-40
         問題是程式無法接受這種型態
         大概是Q78是公式非數字原因罷!
         再則需求是CF3=300-10-20-30-40
         同時也無法適用下一年度所以要修改
         至於之前CF3=300-10-20-30就不用管它
         只要將每月的數字往後寫入即可,好比4月~5月..等等
         CF3=300-10-20-30-40(4月)-50(5月)..小弟是如此想
         [Q79]原方式
         [Q79] = [Q79] - [Q78]
         程式無法接受這種型態
         大概是Q78是公式非數字原因罷!
         依前輩程式是正確 TEMP = Right([Q78], Len([Q78]) - 2)
         [Q79] = [Q79] - TEMP
       End Sub
       跨年問題小弟想法將跨年程式獨立出來比較單純
         Private Sub Workbook_Open()
            If Month(Date) = 1 And Day(Date) = 1 Then 跨年
         End Sub
         Sub 跨年()
             Y = Year(Now()) - 2012
             [CF4].Offset(Y, 0) = [CF3]
             大概這意思可以往下寫[CF5],[CF6]...等等
         End Sub  
       對不起!真的辛苦你囉!請再指導謝謝再三!!
作者: register313    時間: 2012-4-10 14:27

回復 12# myleoyes

[attach]10382[/attach]
我用上一次的檔案去修改的,試試看
最大的關鍵是 1.所要的功能是什麼  2.邏輯問題 3.程式語法不是問題

目前功能:
1月最後一日,按Q80  =>  Q78=月入5,  CF3=300-10=290
2月最後一日,按Q80  =>  Q78=月入10,CF3=300-10-20=270
3月最後一日,按Q80  =>  Q78=月入15,CF3=300-10-20-30=240
...
明年1月最後一日,按Q80  => Q78=月入5,    CF4=300-10=290
明年1月最後一日,按Q80  => Q78=月入10,  CF4=300-10-20=270

不了解的是:
300是什麼
1月最後一日,按Q80  => Q78就變成"賣未入帳", 那 2月最後一日,按Q80不是也沒作用
作者: myleoyes    時間: 2012-4-11 01:20

回復 13# register313
前輩!1月最後一日,按Q80  => Q78就變成"賣未入帳",
     那 2月最後一日,按Q80不是也沒作用
     這不用擔心實際的檔案O79與P79的公式與程式會自動平衡
     不會發生Q78就變成"賣未入帳"的情況,不能按Q80鈕
     因為範例實在無法模擬真實狀況又忘了告訴你很抱歉
     1,按Q80鈕按必須條件已確定,請暫不用想它沒作用
     2,1月最後一日,按Q80  => Q78=月入5,CF3=300-10=290
       這裡是小弟疏忽,因為03版Q78無法用公式
       所以直接用數字心想1月份用10,2月份用20比較容易記
       卻忘了原本公式的數據1月份是5實在傷腦筋歹勢啦!
       不管是月入10或月入5,CF3=300-10或CF3=300-5是公式型態
       而非前輩的CF3=300-10=290值型態這是重點
     3,300是什麼?300是假設101/1/1投入的資金,現在是4月份
       開始記錄所以必包含1~3月份的數字因此
       CF3=300-10-20-30-40(03版)或CF3=300-5-10-15-20(07版)
     再附檔說明
     1,請先看動畫檔,再開檔案比較容易明白
     2,Leov62-07B檔內的P79的數字不用理會它的存在
       那是配合模擬用的
       對不起!真的辛苦你囉!請再指導謝謝再三!!
作者: register313    時間: 2012-4-11 10:37

回復 14# myleoyes

要從2012年1月開始測試,有不合需求的地方要告訴我
  1. Sub 增減資()
  2.     Money = 300                                           '2012年一開始的增減資
  3.     XX = Right([Q78], Len([Q78]) - 2)                     '取出每個月月底的Q78的月入XX中的XX(數字)
  4.     [Q79] = [Q79] - XX                                    '每個月月底的Q79=Q79-XX
  5.     Y = Year(Now()) - 2012                                '計算目前年份與2012年相差Y
  6.     '=================================================
  7.     If Month(Now()) = 1 Then                              '如果月份為1月月底
  8.       If Year(Now()) = 2012 Then                          '如果年份為2012年設定CF3=Money=300
  9.         [CF3] = Money
  10.       Else: [CF3].Offset(Y, 0) = [CF3].Offset(Y - 1, 0)   '如果年份為2013年設定CF4=CF3,年份為2014年設定CF5=CF4
  11.       End If
  12.     End If
  13.     '=================================================
  14.     [CF3].Offset(Y, 0) = [CF3].Offset(Y, 0) - XX          '2012年每個月月底CF3=CF3-XX,2013年每個月月底CF4=CF4-XX
  15. End Sub
複製代碼
[attach]10398[/attach]
作者: hugh0620    時間: 2012-4-11 11:00

回復 14# myleoyes

       myleoyes 你的東西~ 之前有寫過~ 都蠻複雜的~
       很想研究一下你要的東西~ 可惜~ 現在工作較忙~
       沒有時間來研究~ 真是殘念~
       不過也給你打氣~  希望你的問題能夠被解決~
作者: myleoyes    時間: 2012-4-11 22:32

回復 15# register313
前輩!程式的流程與數字完成正確
     需修改的如下!
     1,前輩!忘了小弟一再強調的CF欄要的
     CF3=300-5-10-15-20 是公式的型態
     而非CF3=300-5=295 是值的型態
     CF欄為何要公式的型態呢?
     因為一筆的一筆的記錄流程萬一數字錯誤
     就很容易解除問題
     2,當跨年時前輩的程式要在月底執行
     查帳才產生102年的日期這樣子
     檔案的其他程式都得停擺
     因為檔案起始點就是BY欄的日期然而
     BY4=IF(CF4="","",IF(BY4<>"",BY4,EDATE(BY3,12)))
     所以CF4是主導者怎能在月底才出現呢?
     以上兩問題請再辛苦囉!謝謝再三!!
作者: myleoyes    時間: 2012-4-11 22:39

回復 16# hugh0620
前輩!謝謝你的鼓勵...其實問題並非複雜
只是自己能力差又不善表達常常累壞各位
大大實在感到殆勢萬分!!謝謝大家!!
作者: register313    時間: 2012-4-12 10:36

回復 17# myleoyes
借CG欄一用
請從101年年初開始操作
[attach]10416[/attach]
作者: myleoyes    時間: 2012-4-13 12:10

回復 19# register313
前輩!
     請看你的智慧....是否也為自己感到驕傲呢?哈哈!!
     未來的夢想將會在彈指之間實現
     這就是願景...檔案自動化,生活化是必然的趨勢
     你超厲害!真的太感恩也太辛苦你囉!
     除了謝謝...還是謝謝再三!!




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