从USEDRANGE方法中排除第一行(我的工作表中的第一行)?

mic*_*ler 7 excel vba excel-vba

我有一些来自我的经纪人的输入数据.我写了一些代码来自动计算,添加列和插入一些公式.

最后,我想做一些条件格式化(影响整行)来确定有利可图的事务(绿色字体整行)和丢失的事务(红色字体整行).

要做到这一点,我使用了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
Run Code Online (Sandbox Code Playgroud)

Tim*_*ams 13

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) 
Run Code Online (Sandbox Code Playgroud)


小智 5

使用.offset(1)移动整个范围内引用下降1行。这将在范围的末尾留下一个空行。 .Resize(VBA.UsedRange.Rows.Count - 1)将修剪掉最后一行。

设置TotalRange = VBA.UsedRange.Offset(1).Resize(VBA.UsedRange.Rows.Count-1)