2016-11-17 29 views
0

レコードマクロから生成されたコードは、列を条件付き書式に変換しません。以下のアスタリスクのコードは、エラーのプロンプトです。条件付き書式コードレコードマクロ原因エラー

Worksheets("Characterisation").Select 
    Columns("D:D").Select 
    **Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _ 
    xlConditionValueLowestValue** 
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor 
    .Color = 7039480 
    .TintAndShade = 0 
End With 
Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _ 
    xlConditionValuePercentile 
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50 
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor 
    .Color = 8711167 
    .TintAndShade = 0 
End With 
Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _ 
    xlConditionValueHighestValue 
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor 
    .Color = 8109667 
    .TintAndShade = 0 
End With 

ご協力いただきありがとうございます。

+0

は何のエラー、それは場合 –

+0

を与えません'Selection.FormatConditions(1)'はエラーをスローし、その選択に書式条件が含まれているかどうかをチェックする必要があります。 eady。そうでない場合は、最初に追加する必要があります。 Btw:あなたは**エラーが投げられたことを言及すべきです。そして、あなたは '選択 'の使用と'選択 'の操作を避けるべきです。代わりにオブジェクト変数を使用する必要があります。 –

+0

残りのコードは、行を別のシートに移動して、フォーマットを中断させるため、初期フォーマットがない行に移動する場合に問題になりますか?エラーは「実行時エラー '438':オブジェクトがこのプロパティまたはメソッドをサポートしていません」 – Tom

答えて

0

私は以下のコードを試してみました、それは私が私のExcelワークシート上で実施した試験では、エラーなしで実行されます。

Option Explicit 

Sub CondFormatting() 

With Worksheets("Characterisation") 
    ' add the new type of Conditional Formatting 
    .Columns("D:D").FormatConditions.AddColorScale ColorScaleType:=3 

    With .Columns("D:D")       
     With .FormatConditions(1).ColorScaleCriteria(1) 
      .Type = xlConditionValueLowestValue 
      .FormatColor.Color = 7039480 
      .FormatColor.TintAndShade = 0 
     End With 

     With .FormatConditions(1).ColorScaleCriteria(2) 
      .Type = xlConditionValuePercentile 
      .Value = 50 
      .FormatColor.Color = 8711167 
      .FormatColor.TintAndShade = 0 
     End With 

     With .FormatConditions(1).ColorScaleCriteria(3) 
      .Type = xlConditionValueHighestValue 
      .FormatColor.Color = 8109667 
      .FormatColor.TintAndShade = 0 
     End With   
    End With 

End With 

End Sub 
+0

これは 'With .FormatConditions(1).ColorScaleCriteria(1)'という行で同じエラーを投げています。私のコードの残りの部分に問題があると思っています。あるいは、すでにそれを適用しても機能しないというコラムの書式設定が必要なためです。 – Tom

+0

@Tom残りのコード(関連セクション)を投稿できますか?このエラーの原因となるものを変更していますか? –

+0

@Tomは編集したコードを試してください - 条件付き書式設定タイプの作成を追加しました。 '.AddColorScale ColorScaleType:= 3' –

0

これが答えではありません。

@Shai私は試してより良い結果を得るために遊んできましたが、フォーマットとフィルタリングのための私のコードは以下のようになっています。フィルターは 'VIP'行を1、2、 3 ...

With Worksheets("Burn") 
    Columns("D:D").Select 
Selection.FormatConditions.Delete 
Selection.FormatConditions.AddColorScale ColorScaleType:=3 
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _ 
    xlConditionValueLowestValue 
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor 
    .Color = 7039480 
    .TintAndShade = 0 
End With 
Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _ 
    xlConditionValuePercentile 
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50 
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor 
    .Color = 8711167 
    .TintAndShade = 0 

End With 
Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _ 
    xlConditionValueHighestValue 
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor 
    .Color = 8109667 
    .TintAndShade = 0 
End With 
Selection.FormatConditions.Add Type:=xlTextString, String:="VIP", _ 
    TextOperator:=xlContains 
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
With Selection.FormatConditions(1).Font 
    .Bold = True 
    .Italic = False 
    .Color = -16711681 
    .TintAndShade = 0 
End With 
With Selection.FormatConditions(1).Interior 
    .PatternColorIndex = xlAutomatic 
    .ThemeColor = xlThemeColorLight1 
    .TintAndShade = 0 
End With 
Selection.FormatConditions(1).StopIfTrue = False 

ActiveWorkbook.Worksheets("Burn").AutoFilter.Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Burn").AutoFilter.Sort.SortFields.Add _ 
    Key:=Range("D14"), SortOn:=xlSortOnValues, Order:=xlAscending, _ 
    DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Burn").AutoFilter.Sort 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
    End With 
    ActiveWorkbook.Worksheets("Burn").AutoFilter.Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Burn").AutoFilter.Sort.SortFields.Add(_ 
    Range("D14"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue. _ 
    Color = RGB(0, 0, 0) 
    With ActiveWorkbook.Worksheets("Burn").AutoFilter.Sort 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

End With 

そして、これは私が「VIP」や空白が割り当てられていない限り、新しい行のためのより高い値を作成するために使用していたコードです:

If IsNumeric("D15") Then 
    MaxVal1 = Application.WorksheetFunction.Max(wk2.Range("D15:D1000")) 
    Range("D15").Value = MaxVal1 + 1 

    End If