返回列表 上一主題 發帖

[發問] 程式碼 濃縮

[發問] 程式碼 濃縮

本帖最後由 mark15jill 於 2015-8-16 16:38 編輯

附件程式碼 是否可以有效率的濃縮呢?
是有關於 日期判斷的程式碼....
因此種方法不用考慮二月是否為閏月(28、29)的部分
只是程式會很長
若完成將會弄完整程式碼上來

[程式太長超過論壇的限制... 只好用附件]

需濃縮.rar (1.23 KB)

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

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

  少看=只看不做也枉然

本帖最後由 mark15jill 於 2015-8-17 17:32 編輯
回復  mark15jill
1.  日期判斷是判斷什麼,這段程式的目的是什麼,好歹要說明一下
2.  宣告語法有錯,這 ...
stillfish00 發表於 2015-8-17 15:11



   謝謝大大的回覆..
1.此帖主要的目的在於 濃縮程式碼... 因在下對於濃縮程式碼能力很差,想說是否有其他方法可以濃縮
2.dtp 主要是 日期插件的宣告  d7labx為 label的宣告
3.語法的部份請忽略... 因這的確不是VBA的 ... 只是想詢問濃縮的方法...
4.function qqa 為共用副程式碼區域(有點類似 VBA的 副程式)



在下詢問的其實很簡單...
程式碼濃縮
僅僅如此而已...

至於一開始說的那些  其實只是想說 如果這個問題解決後,我會將成品(完整版程式) 放上論壇供參考...


謝謝

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

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

  少看=只看不做也枉然

TOP

回復  mark15jill
去除         For maa = 1 To 12
以及        For daa = 1 To 31
而直接使用 mma 以及 ...
c_c_lai 發表於 2015-8-17 21:14



    謝謝您的回覆
    剛有試驗過 若將for 迴圈移除  直接以select case 代表的話 則會造成select case 的參數錯誤(讀不到maa or daa)
    進而導致後續的參數都有問題..

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

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

  少看=只看不做也枉然

TOP

本帖最後由 mark15jill 於 2015-8-18 11:11 編輯
回復  mark15jill
好吧,我就講白了。
我的意思是你完全沒說明這段程式是在做甚麼
如果今天你的問題是: ...
stillfish00 發表於 2015-8-18 09:48

    大大您好....
關於這段程式是做甚麼的
我在發帖時就已經有說明...
請參考發帖時的第二行文字和...是有關於 日期判斷的程式碼....
至於前三天旱後三天
若依照您所提供的公式
會造成
1.2月閏月
2.前一年 後一年...

而我所詢問的程式碼則是 不用以上兩點所提的問題
如果都不考慮 我知道是可以寫成
For uu = -3 to 3
    dlab(uu+3).Text = yya & "/" & mma & "/" & dda+uu
next
'yya =年 : mma=月 : dda=日
造成您的困擾 抱歉
[下次關鍵詞 在下會用大紅字標示 以避免造成困擾 ]

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

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

  少看=只看不做也枉然

TOP

回復  mark15jill

DateAdd("d",-1,"2015/3/1")  => 2015/2/28
DateAdd("d",-1,"2016/3/1")  => 2016/2 ...
stillfish00 發表於 2015-8-18 13:24


To stillfish00大大...
    很謝謝您多次的指教...
    但..
     此帖的主要目的在於 濃縮程式碼...
     您的那個方式 如果套用在我目前所撰寫的程式內(程式環境並非office excel vba)  的確會發生我說的那種情形..(應該是我學藝不精)
   
    再次感謝您~

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

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

  少看=只看不做也枉然

TOP

本帖最後由 mark15jill 於 2015-8-18 17:28 編輯

唔...
我自己找到不算方法的方法了
雖然這樣僅僅減少一些..
需要再找規律進行第二次濃縮..

謝謝各位大大
  1.                                 Case iia - 2
  2.                                     If dda = daa Then
  3.                                         dlab(0).Text = yymm & daa - 3
  4.                                         dlab(1).Text = yymm & daa - 2
  5.                                         dlab(2).Text = yymm & daa - 1
  6.                                         dlab(3).Text = yymm & daa
  7.                                         dlab(4).Text = yymm & daa + 1
  8.                                         dlab(5).Text = yymm & daa + 2
  9.                                         dlab(6).Text = yymm1 & 1
  10.                                     End If
複製代碼
可以濃縮成
  1.                                 Case iia - 2
  2.                                     If dda = daa Then
  3.                                         For das = 0 To 5
  4.                                             dlab(das).Text = yymm & daa + das - 3
  5.                                         Next
  6.                                         dlab(6).Text = yymm1 & 1
  7.                                     End If
複製代碼
目前是整理到濃縮(part 1) 之後 準備有相同的濃縮程式碼就要丟去副程式...

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

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

  少看=只看不做也枉然

TOP

        靜思自在 : 人的心地是一畦田,土地沒有播下好種子,也長不出好的果實。 -
返回列表 上一主題