• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:再:好みの列にフィルタをかけたいのですが・・?)

再:好みの列にフィルタをかけたいのですが・・?

このQ&Aのポイント
  • 再度、質問する内容は、エクセルの好みの列にフィルタをかけたいというものです。具体的には、特定の項目のセルを手動で選択し、マクロを実行することでフィルタをかけたいと考えています。しかし、変数関連の記述方法が間違っており、うまく実行できません。質問者は、エクセルの繰り返し機能を使用することができないため、手動で繰り返し実行したいと考えています。
  • 具体的な手順としては、まず図1の好みの項目のセルを手動で選択し、質問のマクロを実行します。次に、同様に他の好みの項目のセルを手動で選択し、同じマクロを実行します。このように繰り返し実行したいという要望です。ただし、項目のセルは任意の行でも選択できることが条件です。
  • 質問者が試したがうまくいかなかったマクロの記述は、以下の通りです。 Sub オートフィルタtest() Dim i As Long Dim S As Range Dim Sdown As Range Set S = Selection.Cells(1, i) Set Sdown = Selection.Cells(2, i) Rows("6:6").AutoFilter Sheets(1).Activate Selection.AutoFilter Field:=i, Criteria1:=">=2", Operator:=xlAnd, _ Criteria2:="<3" With Range(Sdown, Sdown.End(xlDown)) .Interior.ColorIndex = 40 End With End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 ご質問のマクロは、i は、どうやって決めているのか分かりません。 それから、質問のマクロのコードと、画像のサンプルとは一致していません。 Selection.AutoFilter Field:=i, Criteria1:=">=2", Operator:=xlAnd, _ Criteria2:="<3" ←ここは、"<=3" のはずです。 こちらで、それとは違うものを作っみました。 ダブルクリック・イベントで色がつきます。 注意点は、この部分を間違えると、色の位置がずれます。 Set rng = Me.Range("A5", .Cells(.Cells.Count)) 'シートモジュール '------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   Dim rng As Range   Cancel = True   With Range("A5").CurrentRegion     'AutoFilter の左上端と右下端     Set rng = Me.Range("A5", .Cells(.Cells.Count))   End With   Application.ScreenUpdating = False   With rng     'AutoFilter がない時     If Me.AutoFilterMode = False Then       .AutoFilter     ElseIf Me.FilterMode Then        Me.ShowAllData     End If     '色を最初に消す     .Interior.ColorIndex = xlColorIndexNone     'フィールドを求める     i = Target.Column - .Cells(1).Column + 1     .AutoFilter Field:=i, _      Criteria1:=">=2", _      Operator:=xlAnd, _      Criteria2:="<=3"     With Me.AutoFilter.Range       .Columns(i).Offset(1).Resize(.Rows.Count - 1).Interior.ColorIndex = 40     End With   End With   Application.ScreenUpdating = True   Set rng = Nothing End Sub

oshietecho-dai
質問者

お礼

ご回答、誠に有難うございました。

oshietecho-dai
質問者

補足

ご回答、誠に有難うございます。 いやー、誠にすいません。 え~と、 これって、「ActiveX コントロール」CommandButton を使用するんですよね! 私は、今まで、「フォーム コントロール」は使用したことはあるのですが、 「ActiveX コントロール」はないのです。 今、いろいろ行っていますが、「フォーム コントロール」と同じようにマクロを登録すればいいわけで はないようですね。 難しいそうですが、今までのようにコピペだけで、ご回答コードを使用することはできなさそうですね。 私では、即、使用することもできなさそうです。 今、いろいろ調べております・・・

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >Worksheet_BeforeDoubleClick ダブルクリック・イベントで意味が分からないとなると、ちょっと別問題ですね。 ともかく、該当するシートモジュール(タブを右クリック→コードの表示で貼り付ける) 後は、該当する列をダブルクリックすれば、それで良いのですが……。 失礼ですが、oshietecho-daiさんは、多少でも、断片的ではなく体系的に知識を得て、VBAを扱ったほうがよいと思いますね。ここの掲示板でも、4年近くマクロを扱っている方のようなので、初心者ではないと思っています。 私は、基本的には、質問で提示されたものを、そのまま訂正したり直したりしません。修正するには、通常のSubプロシージャに書き換えて、Target をActiveCell に直せば、たぶん動くとは思います。

参考URL:
http://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.excel.worksheet_events(VS.80).aspx
oshietecho-dai
質問者

お礼

こんばんは。 度々のご回答、恐れ入ります。 昨日、未完成かなと思っていた「CommandButtonを作成したブック」を本日開いてダブルクリックしましたら、 実行するではないですか!! ブックを再度、開かないといけないのかな・・・? まだ良く分かっておりませんが、なんとか、もお少し調べてみます。 どうも有難うございました。

関連するQ&A

専門家に質問してみよう