Board logo

標題: [發問] VBA 當餘數=0,底色標示位址產生BUG之修正。 [打印本頁]

作者: Airman    時間: 2015-11-5 16:41     標題: VBA 當餘數=0,底色標示位址產生BUG之修正。

參考附件︰
http://www.FunP.Net/485107

R5=基準值;           R6=計算最終期;  T5=計算基準期數;  T3=R6-T5
R7=T5的計算對應期;  Q5=R7+T3;       Q6=T5-R7

說明︰
For k = 0 To Int([T5] / [Q6])   '列26
當其計算=Q6的間距之個數取整數而餘數時~
其各k點底色標示位址完全正確。
EX︰Sheet1

當其計算=Q6的間距之個數取整數而餘數時~
其最後k點的底色標示依程式是會落在第6列(標題列)。
EX︰Sheet2

因為如以個人的循環想法而論~
順向(往下)計算時,R6期數=最終期
逆向(往上)計算時,R6期數=最終期=最初期(即視同0期)~
所以希望最後k點的底色標示會落在=第R6+6列。
EX︰Sheet3

PS︰W3︰Z6為提供解題者重新測試時~複製貼上Q3用(可不用理會)

需求
請問︰
應該如何修正程式語法?

以上  懇請各位前輩、先進不吝賜教! 謝謝!
作者: 准提部林    時間: 2015-11-5 20:21

本帖最後由 准提部林 於 2015-11-5 20:23 編輯

For k = 0 To Int([T5] / [Q6])
→ For k = 0 To Int(20 / 10) →只跑0,1,2,跑不了到100期??

是不是這樣?
For k = [T5] To [R6] Step [Q6] '20∼100,以10為間隔 
  Cells(k + 6, j).Interior.ColorIndex = 4
  Cells(k + 6, j - 8).Interior.ColorIndex = 43
Next

其它的看得眼都花了,改不了∼∼
作者: Airman    時間: 2015-11-5 21:56

本帖最後由 Airman 於 2015-11-5 21:59 編輯

回復 2# 准提部林
准大:
問題點就只在您更改的26,27,28這一段程式碼
但以For k = [T5] To [R6] Step [Q6]
它是20,30,40....100  即從T5往下跑到R6
小弟需要的是20,10,0 即從T5往上跑到0,但0要視同為R6~即底色要標示在R6

請試想~如果期數以循環來看~
EX:R6=100
1->2->3->.....98->99->100->1->2->3->.....98->99->100-> .........

有想以:
IF [T5]  Mod [Q6]餘數=0 Then 標示期數+R6
來解決,但小弟想了半天,不知如何和 " k " 產生連結?
實在寫不出來^^"

敬請您繼續指導~感恩^^
作者: Airman    時間: 2015-11-5 22:26

更新(簡化)附件:
http://www.FunP.Net/137940

已將不需要的程式碼移除。
請問:
列14~列17的程式碼應如何修改?
才能符合需求。謝謝!
作者: 准提部林    時間: 2015-11-6 10:03

回復 4# Airman


For k = 0 To Int([T5] / [Q6])
  uRow = [T5] + 6 - [Q6] * k
  If uRow <= 6 Then uRow = [R6] + 6 '就將此視為〔例外〕處理 
  Cells(uRow, j).Interior.ColorIndex = 4
  Cells(uRow, j - 8).Interior.ColorIndex = 43
Next k
作者: Airman    時間: 2015-11-6 10:47

回復 5# 准提部林
准大:
測試OK了~又學到一個語法。
謝謝您的耐心協助~感恩




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