2016-08-25 9 views
2

ブローカーからの入力データがあります。 計算を自動化したり、列を追加したり、数式を挿入するためのコードを書いています。USEDRANGEメソッドから最初の行(シートの1行目)を除外しますか?

最後に、収益性の高いトランザクション(緑色のフォント全体の行)と失われたトランザクション(赤色のフォント全体の行)を判断するために、条件付き書式設定(行全体に影響を及ぼす)を行いたいとします。

これを行うにはUSEDRANGEメソッドを使用しました。データが一貫しているため、トリッキーな方法があります。空の行はなく、空の列はほとんどないので、USEDRANGEが処理すると思います。次回はこのレポートを実行するために行が増えるため、USEDRANGEを使用する必要があります。

しかし、私は自分のデータにヘッダー4の列を保持する最初の行を持っています。

私はヘッダーを黒色(フォント)にしておきたいが、USEDRANGEメソッドを使いたい。私は最初の行を除く、USEDRANGEメソッドを使用して、私の条件付き書式を実行するにはどうすればよい

enter image description here

は(それは黒のフォントのまま)。

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 
+1

「.UsedRange」を使用せず、明示的に「TotalRange」を設定することをお勧めします。 '.UsedRange'は頭痛を引き起こす可能性があります。 – Kyle

答えて

5
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) 
+0

私はちょうどこの2行2私のコードを追加する必要がありますか? その部分に少しコメントすることができます: ... ... Resize(TotalRange.Rows.Count-1、TotalRange.Columns.Count) –

+0

はい、最初の行の直後に2行目を追加するだけです。 –

+0

素晴らしいです。ありがとう。 –

2

使用.offset(1) 1行ダウン全範囲の参照を移動します。これにより、範囲の最後に空の行が残ります。 .Resize(VBA.UsedRange.Rows.Count - 1)は最後の行を削除します。

 

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

関連する問題