2016-11-28 5 views
0

今日、私は初めてVBAに対処しなければなりませんでした。調査の約2時間後、私はあきらめて、この質問をすることをやめました。VBA:特定の列の色のセル、値によっては

私のExcelピボットでは、特定のヘッダー "Percentage"で列を検索します。この列が見つかったら、その値に応じてセルの色を付ける必要があります。 (> 1つの緑、赤< 0.9、黄色< 1ウント> = 0.9)

はこれまでのところ、私は(それが常に同じ列ではありませんので、私はそれを検索する必要がある)の列を発見しました。あなたが見ることができるようにしかし、私は、セルの値にアクセスしたい後、私は(13)式のmissmatchエラーを取得

Sub test() 
Dim x As Range 
    Cells.Find(What:="Percentage", After:=ActiveCell, LookIn:=xlFormulas _ 
     , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False).Activate 

    For Each x In ActiveCell.EntireColumn 
     If x.Value > 1 Then 
      x.Interior.ColorIndex = 10 
     End If 
    Next x 
End Sub 

、私は列を反復処理します。これはすでに間違っていますか?

私はきちんと私の問題を説明することができ、いくつかの助け

+1

@bobajob 私はあなたのコードを実行しようとしたが、私はここでtypemissmatch(13)エラーが発生しました条件付き書式設定を使うことができます。詳細については、[here](https://support.office.com/en-gb/article/Use-a-formula-to-apply-conditional-formatting-fed60dfa-1d3f-4e13-9ecb-f1951ff89d7f)を参照してください – Jordan

答えて

0

のために楽しみにして残念ながら、ActiveCell.EntireColumnをループすると、個々のセルを返しません願って、それだけで全体の列である、1 Rangeを返します。代わりに、インデックスでループしてみてください。

Sub test() 
    Dim columnNumber As Long 
    columnNumber = Cells.Find(What:="Percentage", After:=ActiveCell, LookIn:=xlFormulas _ 
     , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False).Column 
    Dim i As Long 
    For i = 1 To ActiveSheet.UsedRange.Rows.Count 
     If Cells(i, columnNumber).Value > 1 Then 
      Cells(i, columnNumber).Interior.ColorIndex = 10 
     End If 
    Next i 
End Sub 
0

あなたがすべきループを通る:戸部に非常に良いアイデアを思えませんトラフ列全体をループする一方
ActiveCell.EntireColumn.Cells
、ヨルダンが述べたように、あなたが条件付き書式を試してみてください、テーブルで使用されている範囲を取得しようとします。

+0

isnこれはコメントとして適していますか?また、 'EntireColumn'をループすることは、決して良い考えではありません。列全体が実際にデータを持っている場合を除いて、私は決して良いアイディアとは言えません。 –

0

あなたの返信をありがとう。 私は条件付き書式でそれをやろうとしましたが、私の列の位置が毎月変わるので可能ですか? 、私はあなたがこのためにVBAを使用する必要はないと思う

If Cells(i, columnNumber).Value > 1 Then

関連する問題