[[20140706093320]] 『オートフィルターの使い方』(muku) ページの最後に飛ぶ

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

 

『オートフィルターの使い方』(muku)

こんにちは!先日からデーターの抽出について勉強していますがまだよくわかっていません
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_03.html
データの入力規則を作成し、詳細設定からだとやれるのですがVBAでマクロを実施すると
コンパイルエラーが出て名前付き引数が見つかりませんと表示されます

Sub macro1()
Dim myROW As Long
Dim mySh As Worksheet
Set mySh = Worksheets("Sheet1")
Application.ScreenUpdating = False
mySh.Range("H:L").Clear
myROW = mySh.Range("A65536").End(xlUp).Row

  With mySh.Range(Cells(1, 1).Cells(myROW, 5))
  .AutoFilter Field:=5, Criterial:=Range("F3").Value
  .SpecialCells(xlCellTypeVisible).Copy mySh.Range("H")
  .AutoFillter
  End With
End Sub

説明通りに打ち込みましたが実行できません。多分データの入力規則の作成部分に何か間違いがあるような気がします。お教えください

< 使用 Excel:Excel2013、使用 OS:windows8.1 >


引数名のタイプミスでしょうか?

 誤)Criterial
 正)Criteria1

(マナ) 2014/07/06(日) 10:10


今度は400とエラーが出ます。400とは見つかりませんという意味ですね
最初のデーターの作り方に問題があるのでしょうか?
よろしくお願いします
(muku) 2014/07/06(日) 10:41

よくみると、他にも間違いが沢山ありますね。

 エラーがでたとき、デバッグをクリックし
 黄色くなる行が間違っています。

(マナ) 2014/07/06(日) 10:56


VBA エラー 9 インデックスが有効範囲にありません。この意味がわかりません

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_03.html このファイルを理解するにはどこの分野を勉強すればよいのでしょうか

ちなみにhttp://www.eurus.dti.ne.jp/~yoneyama/Excel/n-kis_list.htm
http://www4.synapse.ne.jp/yone/excel2013/excel2013_advancedfilter.html#fieldは一応やりました。

 .SpecialCells(xlCellTypeVisible).Copy mySh.Range("H1")に修正いたしました。
(muku) 2014/07/06(日) 13:41

まずは、忠実にリンク先コードを転記してみてください。まだ誤記があります。

 With mySh.Range(Cells(1, 1).Cells(myROW, 5))
 ↓
 With mySh.Range(Cells(1, 1), Cells(myROW, 5))

 .AutoFillter
 ↓
 .AutoFilter

(マナ) 2014/07/06(日) 14:30


別問題ですが、詳細設定とオートフィルタは違います。
詳細設定は、macro2の方です。
でも、せっかくですので、オートフィルタから理解したらよいと思います。
  
オートフィルタ
http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_autofilter.html
詳細設定(フィルタオプション)
http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_advancedfilter.html

(マナ) 2014/07/06(日) 15:07


macro1は、すべてのRangeとCellsの前にmySh.を記述したほうがよいです。
もしSheet1にボタンを配置しマクロを実行する予定なら
シートを指定する必要がないので、
mySh自体使わなくても大丈夫です。

理解しやすくするために、必要な部分だけ残すとこうなります。
下記のコードで、わからないことがありますか?

 Sub test()
    Dim myROW As Long

    Range("H:L").Clear
    myROW = Range("A65536").End(xlUp).Row
    With Range(Cells(1, 1), Cells(myROW, 5))
      .AutoFilter Field:=5, Criteria1:=Range("F3").Value
      .Copy Range("H1")
      .AutoFilter
    End With
 End Sub

(マナ) 2014/07/06(日) 15:21


ありがとうございます。忠実にファイル通りにしてみることで勉強しておりました。できました。ありがとうございます。やはりボタンの記述が間違っていました。きちんと表示できました。本当にありがとうございました。次のステップに進むことができます。感謝いたします

(muku) 2014/07/06(日) 17:10


コメント返信:

[ 一覧(最新更新順) ]


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