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
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) 
小智 5
使用.offset(1)移动整个范围内引用下降1行。这将在范围的末尾留下一个空行。  .Resize(VBA.UsedRange.Rows.Count - 1)将修剪掉最后一行。
设置TotalRange = VBA.UsedRange.Offset(1).Resize(VBA.UsedRange.Rows.Count-1)