Board logo

標題: [發問] 看不懂這個程式的迴圈 [打印本頁]

作者: 小華    時間: 2013-1-8 22:06     標題: 看不懂這個程式的迴圈

Private Sub CommandButton1_Click()
Set X = Sheets("Core KPIs")
Set Y = Sheets("KPI_to_China")
K1 = 3
K2 = 39
    For I = K1 To K2   
        Flag = Y.Cells(I, 1)  'sheets("KPI to_China").Cells(3,1) ??
        If Flag <> "" Then
               Y.Cells(I, 2) = X.Cells(Flag, 4) ' 這三句看不懂甚麼意思
               Y.Cells(I, 3) = X.Cells(Flag, 7)
               Y.Cells(I, 4) = X.Cells(Flag, 9)
               
               Select Case Y.Cells(I, 4)
                      Case "%"
                            Y.Cells(I, 5) = Format(X.Cells(Flag, 10), "00.00%")
                            Y.Cells(I, 6) = Format(X.Cells(Flag, 12), "00.00%")
                            Y.Cells(I, 7) = Format(X.Cells(Flag, 13), "00.00%")
                            Y.Cells(I, 20) = Format(X.Cells(Flag, 14), "00.00%")
                      Case "Abslute (#)"
                            Y.Cells(I, 5) = Format(X.Cells(Flag, 10), "00")
                            Y.Cells(I, 6) = Format(X.Cells(Flag, 12), "00")
                            Y.Cells(I, 7) = Format(X.Cells(Flag, 13), "00")
                            Y.Cells(I, 20) = Format(X.Cells(Flag, 14), "00")
                      Case Else
                            Y.Cells(I, 5) = Format(X.Cells(Flag, 10), "0.000")
                            Y.Cells(I, 6) = Format(X.Cells(Flag, 12), "0.000")
                            Y.Cells(I, 7) = Format(X.Cells(Flag, 13), "0.000")
                            Y.Cells(I, 20) = Format(X.Cells(Flag, 14), "0.000")
               End Select

另外請問檔案開啟之後,按鈕不能按(CommandButton)??
作者: mark15jill    時間: 2013-1-9 08:34

Private Sub CommandButton1_Click()
Set X = Sheets("Core KPIs")
Set Y = Sheets("KPI_to_China")
K1  ...
小華 發表於 2013-1-8 22:06



    Set X = Sheets("Core KPIs")
Set Y = Sheets("KPI_to_China")

        Flag = Y.Cells(I, 1)  'sheets("KPI to_China").Cells(3,1) ??

                Y.Cells(I, 2) = X.Cells(Flag, 4) ' 這三句看不懂甚麼意思
                Y.Cells(I, 3) = X.Cells(Flag, 7)
                Y.Cells(I, 4) = X.Cells(Flag, 9)


'還原回原始
                FOR i = 3 to 39
                        Sheets("KPI_to_China").Cells(I, 2) = Sheets("Core KPIs").Cells(Y.Cells(I, 1), 4)
                        Sheets("KPI_to_China").Cells(I, 3) = Sheets("Core KPIs").Cells(Y.Cells(I, 1), 7)
                        Sheets("KPI_to_China").Cells(I, 4) = Sheets("Core KPIs").Cells(Y.Cells(I, 1), 9)

                        'Sheets("KPI_to_China").Cells(I, 2) ==> Sheets("KPI_to_China").range("b"&i).value

作者: GBKEE    時間: 2013-1-9 15:37

回復 1# 小華
Cells 屬性 看不懂? 可察看VBA 的說明.
作者: 小華    時間: 2013-1-9 17:16

回復 3# GBKEE


    CELLS 屬性大致了解,只是看不懂迴圈內所代表的意思
作者: 小華    時間: 2013-1-9 17:24

回復 2# mark15jill


                        Sheets("KPI_to_China").Cells(I, 2) = Sheets("Core KPIs").Cells(Y.Cells(I, 1), 4)  請問4.7.9  是代表甚麼意思???
                        Sheets("KPI_to_China").Cells(I, 3) = Sheets("Core KPIs").Cells(Y.Cells(I, 1), 7)
                        Sheets("KPI_to_China").Cells(I, 4) = Sheets("Core KPIs").Cells(Y.Cells(I, 1), 9)

                        'Sheets("KPI_to_China").Cells(I, 2) ==> Sheets("KPI_to_China").range("b"&i).value   這句是表示Sheets("KPI_to_China").range("b"&i).value 的值  複製到'Sheets("KPI_to_China").Cells(I, 2)的位置?

謝謝高手的指導,已大致明白程式所寫的意思  還有少部分不是很懂。
作者: mark15jill    時間: 2013-1-9 17:25

本帖最後由 mark15jill 於 2013-1-9 17:28 編輯

回復 5# 小華


4 7 9  = 欄數 (舉例  A=1 , B=2 ,C=3  以此類推
4=D欄
7=G欄
9=I欄

'Sheets("KPI_to_China").Cells(I, 2) ==> Sheets("KPI_to_China").range("b"&i).value
這行的意思 是  Sheets("KPI_to_China").Cells(I, 2) 等於 Sheets("KPI_to_China").range("b"&i).value

cells(I,2) 可以視為 range("b" & i).value
作者: 小華    時間: 2013-1-9 17:55

回復 6# mark15jill


    謝謝高手指導,第一次看到這種寫法。 程式太複雜 看到眼花花了.......
作者: mark15jill    時間: 2013-1-9 19:38

回復 7# 小華


    這個只是把程式碼用其他字眼取代 節省程式碼的長度...
作者: 小華    時間: 2013-1-9 20:13

回復 8# mark15jill

就是因為簡化了程式碼的長度,所以看不懂程式所代表的意思

我還是個剛學習的新手,只看得懂簡單的程式碼。

謝謝高手 幫我解開一些不懂的地方,現在我在著手了解這個程式整個的意思,好進行維護修改........

對於迴圈還不是很懂,所以有時候想到頭很痛........
作者: mark15jill    時間: 2013-1-10 08:12

本帖最後由 mark15jill 於 2013-1-10 08:15 編輯

回復 9# 小華


    偶不是高手... 偶只是潛水艇    ;P
這網址可參考看看

(VBA的使用)
http://civil.njtc.edu.tw/weng/excel/lectureNote/1.6.htm
比較適合剛接觸的

加油吧

我也剛接觸沒多久= =""(不知道等等會不會被打..
像我有時候,如果真的不知道怎濃縮程式
我會
1.跑上論壇問
2.拜見酷哥大神
3.將程式碼一段段展開 再找相同地方(或有依序) 在試驗濃縮,所以有時候 我的程式一開始會超過幾百行,結束時,剩不到幾十行..     ;P




教你個訣竅
利用數學的代數方式
把相同的代入 這樣你會比較好懂




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