我有一些来自我的经纪人的输入数据。 我编写了一些代码来自动计算,添加列和插入一些公式。
最后,我想做一些条件格式化(影响整行)以确定有利可图的事务(绿色字体整行)和丢失的事务(红色字体整行)。
为此,我使用了USEDRANGE方法 - 我知道这是一个棘手的方法,我的数据是一致的 - 没有空行,只有很少的空列,所以我认为USEDRANGE会处理它。我需要使用USEDRANGE,因为下次我将运行此报告时会有更多行。
但我在我的数据中有第一行,我将标题列为4列。
我希望我的标题保持黑色(字体),但我仍然想使用USEDRANGE方法。
如何使用USEDRANGE方法执行条件格式设置,排除第一行(因此它保持黑色字体)。
Option Explicit
Dim RowNumber As Long
Dim LastRow As Long
Dim ColumnNumber As Integer
Dim LastColumn As Integer
Dim VBA As Worksheet
Dim TotalRange As Range
Sub CondicionalFormating_WholeRows()
Set VBA = Workbooks("lista transakcji Dukascopy od October 2015.xlsm").Worksheets("VBA")
Set TotalRange = VBA.UsedRange
LastRow = VBA.Cells(Rows.Count, 1).End(xlUp).Row
LastColumn = VBA.Cells(1, Columns.Count).End(xlToLeft).Column
TotalRange.FormatConditions.Add Type:=xlExpression, Formula1:="=$H1<0"
TotalRange.FormatConditions(TotalRange.FormatConditions.Count).SetFirstPriority
With TotalRange.FormatConditions(1).Font
.Bold = False
.Italic = False
.Strikethrough = False
.Color = -16777024
.TintAndShade = 0
End With
TotalRange.FormatConditions(1).StopIfTrue = False
TotalRange.FormatConditions.Add Type:=xlExpression, Formula1:="=$H1>0"
TotalRange.FormatConditions(TotalRange.FormatConditions.Count).SetFirstPriority
With TotalRange.FormatConditions(1).Font
.Bold = False
.Italic = False
.Strikethrough = False
.ThemeColor = xlThemeColorAccent6
.TintAndShade = -0.499984740745262
End With
TotalRange.FormatConditions(1).StopIfTrue = False
' VBA.Range(Cells(1, 1), Cells(LastRow, LastColumn)).Select
End Sub
答案 0 :(得分:12)
Set TotalRange = VBA.UsedRange '<<< your existing line
'Add this line right after
Set TotalRange = TotalRange.Offset(1,0).Resize(TotalRange.Rows.Count-1, _
TotalRange.Columns.Count)
答案 1 :(得分:3)
使用.offset(1)
将整个范围参考向下移动1行。这将在范围的末尾留下一个空行。 .Resize(VBA.UsedRange.Rows.Count - 1)
将裁掉最后一行。
Set TotalRange = VBA.UsedRange.Offset(1).Resize(VBA.UsedRange.Rows.Count - 1)