[[20210902085524]] 『VBAオートフィルタで抽出したデータの特定の列のax(ここあ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAオートフィルタで抽出したデータの特定の列のみ文字色を変えたい』(ここあ)

お世話になっております。

vbaで15列目の★のマークがついた行をオートフィルタで抽出し、6列目の文字の色を赤くしたいのですがうまくいきません。

他の方の質問で行全体の色を変えるものがあり、こちらは使えたのですが、できれば6列目の文字の色だけを変えたいです。

オートフィルタの抽出結果がない場合もあり、その場合は何もせずに次の処理へ移るようにしたいです。

どなたかご教授頂けましたら幸いです。宜しくお願い致します。

Dim 項目行以外 As Range, 抽出範囲 As Range

        With ActiveSheet
            'オートフィルタ解除
            .AutoFilterMode = False
            'オートフィルタを設定し抽出する
            .Range("A1").AutoFilter Field:=15, Criteria1:="★"
            'オブジェクト型(Range型)変数にセル範囲をセット
            With .AutoFilter.Range
                Set 項目行以外 = Intersect(.Cells, .Cells.Offset(1))
                Set 抽出範囲 = .SpecialCells(xlCellTypeVisible)
                Debug.Print 項目行以外.Address(0, 0) '確認用
                Debug.Print 抽出範囲.Address(0, 0) '確認用
            End With
            '項目行以外 かつ 抽出されている範囲(行)の文字色を赤に変更
            If Not Intersect(項目行以外, 抽出範囲) Is Nothing Then
                Intersect(項目行以外, 抽出範囲).Font.Color = vbRed
            End If
            'オートフィルタ解除
            .AutoFilterMode = False
        End With

< 使用 Excel:Excel2016、使用 OS:unknown >


こんな感じとか?
    Sub 始まりも終わりもないマクロ()
        Dim MyRNG  As Range

        ActiveSheet.AutoFilterMode = False
        ActiveSheet.Range("A1").AutoFilter Field:=15, Criteria1:="★"

        With ActiveSheet.AutoFilter.Range
            On Error Resume Next
            Set MyRNG = Intersect(.Cells, .Cells.Offset(1).Columns(6)).SpecialCells(xlCellTypeVisible)
            On Error GoTo 0

            If Not MyRNG Is Nothing Then MyRNG.Font.Color = vbRed
        End With

        ActiveSheet.AutoFilterMode = False
    End Sub

(もこな2 ) 2021/09/02(木) 09:32


ありがとうございます!
思い通りの結果が得られ、とても勉強になりました!
(ここあ) 2021/09/02(木) 11:25

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.