我一直在網上搜索,但我找不到任何解決方案。必須有一種方法可以大大縮短此 VBA 代碼(見下文)。從 H4 開始的第 4 行中的單元格與第 5 行中保存日期的單元格相關。如果 H5 是該月的第一天,則 H4 的值為“Ja”(瑞典語為“是”)。如果陳述句為 TRUE,則范圍 H7:H106 應獲得黑色左邊框,如果為 FALSE,則相同范圍應獲得白色左邊框。在我的代碼中,我必須使用定義的范圍和唯一的單元格參考。問題是,我需要 365 列的代碼!這是我的版本:
Sub FirstDayLine()
Dim r1, r2, r3, r4, r5 As Range
Set r1 = Range("H7:H106")
Set r2 = Range("I7:I106")
Set r3 = Range("J7:J106")
Set r4 = Range("K7:K106")
Set r5 = Range("L7:L106")
If Range("H4").value = "Ja" Then
r1.Borders(xlEdgeLeft).color = vbBlack
Else
r1.Borders(xlEdgeLeft).color = vbWhite
End If
If Range("I4").value = "Ja" Then
r2.Borders(xlEdgeLeft).color = vbBlack
Else
r2.Borders(xlEdgeLeft).color = vbWhite
End If
If Range("J4").value = "Ja" Then
r3.Borders(xlEdgeLeft).color = vbBlack
Else
r3.Borders(xlEdgeLeft).color = vbWhite
End If
If Range("K4").value = "Ja" Then
r4.Borders(xlEdgeLeft).color = vbBlack
Else
r4.Borders(xlEdgeLeft).color = vbWhite
End If
If Range("L4").value = "Ja" Then
r5.Borders(xlEdgeLeft).color = vbBlack
Else
r5.Borders(xlEdgeLeft).color = vbWhite
End If
End Sub
我知道這一切都可以通過一些“For Each”編碼來解決,但我做對了。
uj5u.com熱心網友回復:
For Each正如你提到的,有一個回圈:
Dim cell As Range
For Each cell in Range("I4:L4")
Dim rng As Range
Set rng = cell.EntireColumn.Rows("7:106")
If cell.Value = "Ja" Then
rng.Borders(xlEdgeLeft).color = vbBlack
Else
rng.Borders(xlEdgeLeft).color = vbWhite
End If
Next
雖然,正如評論中提到的,這很容易通過條件格式來實作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/380363.html
