Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2016)
オートフィルター うまく動かない
投稿日時: 21/06/19 22:18:22
投稿者: みみ1212

いつもお世話になります。
 
名簿のシートで絞り込みをし、そのデータをリストに代入したいと思っています。
 
名簿シートの3行目は見出し行になっています。
会社名はC列 名前はE列に入力されています。
会社名で絞り込み、名前をリストシートに代入したいのですが、
 
フィルターで絞り込みが上手くいかず
結果は見出し行がD列から右方向に表示されます。
本を見ながらやったつもりなのですが、わからずにいます。
 
どなたか教えていただけないでしょうか。
よろしくお願いいたします。
 
 
 
Sub test()
    
   Dim 会社名 As String
   会社名 = Range("B1").Value
    
    
With Sheets!名簿.Range("C3")
 
    .AutoFilter Field:=3, Criteria1:=会社名
     
         Range("D:D").EntireColumn.Hidden = True
         Range("F:AP").EntireColumn.Hidden = True
     
    .CurrentRegion.Copy Sheets("リスト").Range("C:C")
     
         Range("D:D").EntireColumn.Hidden = False
         Range("F:AP").EntireColumn.Hidden = False
     
    .AutoFilter
End With
 
End Sub
 

回答
投稿日時: 21/06/20 10:33:40
投稿者: simple

>結果は見出し行がD列から右方向に表示されます。
ちょっとよく分かりません。
ステップ実行して、フィルタの結果は確認していますか?
 
また、下記のセル範囲にどんなデータが入っていますか。

        A列     B     C     D      E
1行
2
3
4
5
もちろん架空のもので構いません。
特に、A列、B列はどうなっていますか?
 
いくつか改善点はわかっていますが、
まずは上記について確認したいと思います。

回答
投稿日時: 21/06/22 16:23:00
投稿者: mattuwan44

別シートに結果を出す & 項目を取捨選択したい
 
ならば、フィルターオプションの機能が便利です。
一工夫が必要ですが、頑張ってやってみる価値はあるかと思いまうs。

回答
投稿日時: 21/12/16 23:35:05
投稿者: NoCodeVBA
投稿者のウェブサイトに移動

こんにちは。
【結論】セルは、必ずシートの指定をしましょう。
(複数のシートを行き来する場合は、絶対に)
 
この事例の、
   会社名 = Range("B1").Value は、
「リスト」シート上で、コードを実行した場合、
「名簿」シートではなく、「リスト」シートを参照します。
よって、「リスト」シートのRange("B1")は空欄のため、
見出しの行のみが選択され、コピーされることになります。
 
正しくは、
 会社名 = Sheets("名簿").Range("B1").Value
          Sheets("名簿").Range("D:D").EntireColumn.Hidden = True
          Sheets("名簿").Range("F:AP").EntireColumn.Hidden = True
          Sheets("名簿").Range("D:D").EntireColumn.Hidden = False
          Sheets("名簿").Range("F:AP").EntireColumn.Hidden = False
だと思われます。
 
 
 
 
 
 

トピックに返信