[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フィルタの適用範囲を調べてそのフィルタを利用したい』(初心者)
色々やってみましたが実行時エラーが出てしまいます。
助けていただきたいです;
【やりたいこと】
14行目にフィルタがかかっているシート1がある。
毎月、フィルタがかかったデータ数は変動する。
25列目に「事業部」という項目があり、その中の「JF」「JS」にチェックを入れたい。(実際には20個くらいチェックが必要なので、自動化したいです)
【作ってみたプログラム】
★のところで「オブジェクト変数またはWithブロック変数が設定されていません」とエラーが出る。Withを入れてみたりDimの型を変えてみたりしましたが解決できず・・・。
Sub i()
Dim ws1 As Worksheet
Dim Hani As Range
'加工するファイルを開いて作業シートを指定する
Dim ofn As String
ofn = Application.GetOpenFilename("ブック, *.xlsx")
If ofn <> "False" Then
Workbooks.Open (ofn) Else MsgBox "キャンセルされました" End If Set ws1 = Worksheets("明細") '明細シート をws1とする
'オートフィルターの適用範囲を調べる→毎月範囲が変わるので
ws1.Activate
★Hani = ActiveSheet.AutoFilter.Range.Address
'Y列「事業部」でJF,JSをチェックする
ActiveSheet.Range("Hani").AutoFilter Field:=25, Criteria1:=Array( _
"JF", "JS), Operator:=xlFilterValues End Sub
どうぞよろしくお願いいたします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
Dim Hani As Range
とされているのですから、Setしないとダメですよね?
さらに、addressプロパティは【文字列】を返すものでRangeオブジェクトは返しません。
したがって
Set Hani = ActiveSheet.AutoFilter.Range
と修正すればよいとおもいます。
(もこな2 ) 2020/06/19(金) 10:57
Sub 整理() Dim ブックパス As String
ブックパス = Application.GetOpenFilename("ブック, *.xlsx") If ブックパス = "False" Then MsgBox "キャンセルされました" Else With Workbooks.Open(ブックパス).Worksheets("明細") .Activate .AutoFilter.Range.AutoFilter Field:=25, Criteria1:=Array("JF", "JS"), Operator:=xlFilterValues End With End If End Sub
(もこな2 ) 2020/06/19(金) 11:17
整理してくださってありがとうございます。
こんなにシンプルにできるんですね。
VBAの記述の仕方は全く理解していないので
いろんなところから事例をひっぱってきてうまくいくように
切り貼りしたりしていたのでごちゃごちゃしていました;
とても助かりました。
(初心者) 2020/06/19(金) 12:45
Sub 整理()
Dim ブックパス As String ブックパス = Application.GetOpenFilename("ブック, *.xlsx") If ブックパス = "False" Then MsgBox "キャンセルされました" Else With Workbooks.Open(ブックパス).Worksheets("明細") .Activate ?@ .AutoFilter.Range.AutoFilter Field:=8, Criteria1:=Array("建仮"), ?A .AutoFilter.Range.AutoFilter Field:=25, Criteria1:=Array("JF", "JS"), Operator:=xlFilterValues End With End If End Sub (初心者) 2020/06/19(金) 13:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.