[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートフィルタで検索中セルがわかりにくい』(FALCON)
よろしくお願いします
オートフィルタで検索中セルの表示が小さくわかり
にくいので、こちらの学校で検索をして下記のコードが
紹介されてましたので使わせて頂いております
今、フィルタ抽出しているセルが赤くなり、わかりやすい
のですが、その行全体に色がついている場合があります
フィルタ抽出を解除したあと白くなるのでですが
元の色に戻すことは可能でしょうか
可能であれば方法を教えて頂けなしでしょうか
Private Sub Worksheet_Calculate()
Static MyRng As Range Dim i As Long If Me.AutoFilterMode Then With Me.AutoFilter Set MyRng = .Range For i = 1 To .Filters.Count If .Filters(i).On Then MyRng.Cells(i).Interior.ColorIndex = 3 ’3=赤 Else MyRng.Cells(i).Interior.ColorIndex = xlNone End If Next i End With Else If Not MyRng Is Nothing Then For i = 1 To MyRng.Columns.Count MyRng.Cells(i).Interior.ColorIndex = xlNone Next i End If End If End Sub
< 使用 Excel:Excel2010、使用 OS:Windows2000 >
そもそも、範囲の一部に色がついていて、それを残したいのであれば、
フィルタされた箇所を赤くするということ自体が悪手ではないですか?
抽出されたことで既に目立っているわけですよね。
どうしても、ということなら、
・マクロの最初で別領域にコピー(退避)しておき、
・マクロの最後で復旧することになるでしょう。
なお、経緯が不明ですが、Calculateのつど動作する点は
副作用がないんですか?
関係ないところの変更でも動作するわけで、
static領域がいったん定義されれば、
その動作の都度、その領域は色を消されることになっていますよね。
全体に仕様を再検討された方がよさそうな印象です。
(γ) 2020/08/12(水) 14:52
(γ) 2020/08/12(水) 15:15
オートフィルタと違って行の絞り込みはしませんが、併用して、絞り込むのはオートフィルタで、着色するのは条件付き書式と分担すれば良いでしょう。 検索文字列を2度入力するのは手間なので、条件付き書式用文字列を入力すると、マクロでオートフィルタがかかるようにするとか。
(???) 2020/08/12(水) 16:46
「その行全体に色がついている場合があります」というのは、
どういう意味でしょう?
「フィルターをかけた時に、対応するタイトル行のセルのみではなく、
フィルター条件を設定した列全体に色がつく場合があるし、つかない場合もある」
ということですか?
(コードを見る限り、列全体や行全体に色がつくように見えないのですが……)
やりたいことはなんでしょう?
「白くなる」ににもかかわらず、
「元に戻したい」ということは、
ここでいう「元の状態」とは「対応するタイトルセルが赤くなっている状態」のことであり、
「フィルターされている状態で赤くなっていたセルを、
フィルター解除後も赤いままにしたい」ということでしょうか?
もしそうなら、「Else〜」から、一つめの「End If」を消せば、
一応マクロの想定している「無色に戻す操作」はキャンセルできそうですが……。
(愛飢え男) 2020/08/12(水) 17:38
Private Sub Worksheet_Calculate() Static MyRng As Range Dim i As Long If Me.AutoFilterMode Then With Me.AutoFilter Set MyRng = .Range MyRng.Rows(1).Cells.FormatConditions.Delete For i = 1 To .Filters.Count If .Filters(i).On Then MyRng.Cells(i).FormatConditions.Add Type:=xlExpression, Formula1:="=TRUE" MyRng.Cells(i).FormatConditions(1).Interior.ColorIndex = 3 Else MyRng.Cells(i).FormatConditions.Add Type:=xlExpression, Formula1:="=TRUE" MyRng.Cells(i).FormatConditions(1).Interior.ColorIndex = xlNone End If Next End With Else If Not MyRng Is Nothing Then _ MyRng.Rows(1).Cells.FormatConditions.Delete End If End Sub
(kazuo) 2020/08/12(水) 19:43 訂正19:59
Static MyRng As Range Static dt() Dim i As Long If Me.AutoFilterMode Then With Me.AutoFilter Set MyRng = .Range ReDim dt(.Filters.Count) For i = 1 To .Filters.Count dt(i) = MyRng.Cells(i).Interior.ColorIndex If .Filters(i).On Then MyRng.Cells(i).Interior.ColorIndex = 3 '3=赤 Else MyRng.Cells(i).Interior.ColorIndex = xlNone End If Next i End With Else If Not MyRng Is Nothing Then For i = 1 To MyRng.Columns.Count MyRng.Cells(i).Interior.ColorIndex = dt(i) Next i End If End If End Sub (mm) 2020/08/13(木) 09:56
A B C D E・・・ 1 エリア 都道府県 担当者 任意のセルに=NOW()が入っています 2 名古屋 愛知県 白井 3 大阪 大阪府 河野 4 松阪 三重県 白井 5 神戸 兵庫県 森口 6 鳥羽 三重県 白井
1行目はタイトル行ということで書式設定で黄色の色が設定してあります
最初に掲載させて頂いたマクロでは
例えばA1セルにてエリアを選択した場合、A1セルが赤くなり、A列がフィルタ選択されて
いることがわかります
その際、B1、C1セルの黄色は消えます
フィルタをすべてを選択にするとA1セルの赤がなくなります
この時にA1、B1,C1セルを元の黄色にできないか のご相談でした
kazuoさんのマクロを確認させて頂きました
フィルタをすべてを選択にするとA1セルの赤がなくなります
A1、B1,C1セルは白いままでした
A1、B1、C1セルに条件付き書式の設定がありましたので
それを解除するとA1、B1,C1セルは黄色になりました
mmさんのマクロを認させて頂きました
フィルタをすべてを選択にするとA1セルの赤がなくなります
A1、B1,C1セルは白いままでした
こちらはA1、B1、C1セルに条件付き書式の設定は残っていませんでした
EXCELはEXCEL2016でした
WINDOWS10でした
訂正させて頂きます
すみませんでした
(FALCON) 2020/08/13(木) 13:46
Private Sub Worksheet_Calculate() Static MyRng As Range Dim i As Long If Me.AutoFilterMode Then With Me.AutoFilter Set MyRng = .Range.Rows(1) MyRng.Cells.FormatConditions.Delete For i = 1 To .Filters.Count If .Filters(i).On Then Exit For Next If .Filters.Count < i Then Exit Sub For i = 1 To .Filters.Count If .Filters(i).On Then MyRng.Cells(i).FormatConditions.Add Type:=xlExpression, Formula1:="=TRUE" MyRng.Cells(i).FormatConditions(1).Interior.ColorIndex = 3 Else MyRng.Cells(i).FormatConditions.Add Type:=xlExpression, Formula1:="=TRUE" MyRng.Cells(i).FormatConditions(1).Interior.ColorIndex = xlNone End If Next End With Else If Not MyRng Is Nothing Then _ MyRng.Cells.FormatConditions.Delete End If End Sub
(kazuo) 2020/08/13(木) 18:59
Private Sub Worksheet_Calculate() Static MyRng As Range Dim i As Long
If Me.AutoFilterMode Then With Me.AutoFilter Set MyRng = .Range MyRng.Rows(1).Interior.Color = vbYellow
For i = 1 To .Filters.Count If .Filters(i).On Then MyRng.Cells(i).Interior.Color = vbRed End If Next i End With ElseIf Not MyRng Is Nothing Then MyRng.Rows(1).Interior.Color = vbYellow End If
End Sub
(マナ) 2020/08/13(木) 19:03
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.