返回列表 上一主題 發帖

[發問] VBA 程式碼簡化。

[發問] VBA 程式碼簡化。

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

Private Sub CommandButton1_Click()
Dim j%, k%
   
      Sheets("DATA").Range("I6", "P" & [R6] + 6).Copy [I6] '複製I:P資料
      Range("I" & [Q5] + 7, "P" & [R6] + 6).Copy [A7]
      Range("I7", "P" & [Q5] + 6).Copy Range("A" & [Q6] + 7) '複製A:H資料
      Cells([T5] + 6, 9).Interior.ColorIndex = 4 'I欄的T5期數標示底色
    If ([T5] + [Q6]) Mod [R6] > 0 Then
      Cells(([T5] + [Q6]) Mod [R6] + 6, 1).Interior.ColorIndex = 8 'A欄的T5期數標示底色
    Else
      Cells([R6] + 6, 1).Interior.ColorIndex = 8
    End If
   
   For j = 10 To 16
        If Cells([T5] + 6, j) = [R5] Then  '以I欄T5期數有顯示R5值為基準條件
             If ([T5] + [Q6]) Mod [R6] = 0 Then
              Cells([R6] + 6, j - 8).Interior.ColorIndex = 8
              Cells([R6] + 6, j).Interior.ColorIndex = 37
        With Cells([Q6] + 6, j - 8)
             .Interior.ColorIndex = 8
             .Font.ColorIndex = 7
             .Font.FontStyle = "粗體"
        End With
        With Cells([Q6] + 6, j)
             .Interior.ColorIndex = 37
             .Font.ColorIndex = 7
             .Font.FontStyle = "粗體"
        End With
        
        Else
             For k = 0 To Int(([R6] - ([T5] + [Q6]) Mod [R6]) / [Q6])
              Cells(([T5] + [Q6]) Mod [R6] + 6 + [Q6] * k, j - 8).Interior.ColorIndex = 8  'A欄T5期依各間距數往下標示底色
              Cells(([T5] + [Q6]) Mod [R6] + 6 + [Q6] * k, j).Interior.ColorIndex = 37
             Next k
        With Cells(([R6] - ([R6] - ([T5] + [Q6]) Mod [R6]) Mod [Q6] + [Q6]) Mod [R6] + 6, j - 8)  'A欄=k的最後間距期數再加一個間距標示底色
             .Interior.ColorIndex = 8
             .Font.ColorIndex = 7
             .Font.FontStyle = "粗體"
        End With
        With Cells(([R6] - ([R6] - ([T5] + [Q6]) Mod [R6]) Mod [Q6] + [Q6]) Mod [R6] + 6, j)
             .Interior.ColorIndex = 37
             .Font.ColorIndex = 7
             .Font.FontStyle = "粗體"
        End With
        End If
        End If
   
   Next j

[R6].Select
End Sub

需求
請問︰
程式碼能如何再簡化?
以上  懇請各位前輩、先進不吝賜教! 謝謝!

補充說明:
重點是在列31~列34
因為([T5] + [Q6]) Mod [R6] = 0時,會產生bug,只好分成上下二段寫~
所以覺得程式碼有些冗長,不知是否能再稍作整理簡化之?
謝謝!

TOP

回復 4# 准提部林
准大:
謝謝您的詳細分解。
小弟受益良多~感恩^^

TOP

        靜思自在 : 人生沒有所有權,只有生命的使用權。
返回列表 上一主題