Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10086 / 13646 ツリー ←次へ | 前へ→

【23638】オートフィルターの処理でエラーがでる かおりん 05/3/31(木) 18:32 質問[未読]
【23642】Re:オートフィルターの処理でエラーがでる IROC 05/3/31(木) 20:51 回答[未読]
【23643】Re:オートフィルターの処理でエラーがでる ponpon 05/3/31(木) 21:10 発言[未読]
【23650】Re:作り直して見ましたがエラーがでます。 かおりん 05/4/1(金) 10:03 発言[未読]
【23685】Re:作り直して見ましたがエラーがでます。 ponpon 05/4/1(金) 20:33 発言[未読]
【23790】Re:作り直して見ましたがエラーがでます。 かおりん 05/4/4(月) 16:33 お礼[未読]

【23638】オートフィルターの処理でエラーがでる
質問  かおりん  - 05/3/31(木) 18:32 -

引用なし
パスワード
   オートフィルターの処理についての質問です。
以下のように、セルに入力された条件でオートフィルターをかけたいのですが、
「実行時エラー'1004'
RangeクラスのAutoFilterメゾットが失敗しました。」と表示されます。
いろいろ試したのですが、うまくいく方法がありますか?

Sub 並び替え()
'
'選択したセルが0ならば、オートフィルターですべて表示させる
' 0で無いならば、選択したセルの条件でオートフィルターをかける。
'
 
  Selection.AutoFilter
  Rows("6:6").Select
  Selection.AutoFilter
                              
  If [E2] = 0 Then                   
    Selection.AutoFilter Field:=5           
  Else                          
    Selection.AutoFilter Field:=5, Criteria1:=[E2]    
  End If
   
  If [G2] = 0 Then
    Selection.AutoFilter Field:=7
  Else
    Selection.AutoFilter Field:=7, Criteria1:=[G2]
  End If
  
  If [Q2] = 0 Then
    Selection.AutoFilter Field:=17
  Else
    Selection.AutoFilter Field:=17, Criteria1:=[Q2]
  End If
 
  If [m2] = 0 Then
    Selection.AutoFilter Field:=13
  Else
    Selection.AutoFilter Field:=13, Criteria1:=[m2]
  End If
 
   
 [f7].Select

End Sub


以上宜しくお願いします。

【23642】Re:オートフィルターの処理でエラーがでる
回答  IROC  - 05/3/31(木) 20:51 -

引用なし
パスワード
   どの行でエラーになるのでしょうか?

Rows("6:6").Select ではなく、
Range("A6:E100") のようにデータ範囲を指定してみては?

>選択したセルが0ならば
選択したセルとは何でしょうか?
アクティブセルのことですか?
コードからは読み取れませんが・・・


>  If [E2] = 0 Then                   
あと省略形で記述するのはやめた方がよいと思います。


with Range("A6:E100")
                             
  If Range("E2").Value = 0 Then                   
    .AutoFilter Field:=5           
  Else                          
    .AutoFilter Field:=5, Criteria1:=[E2]    
  End If

End with
   

【23643】Re:オートフィルターの処理でエラーがでる
発言  ponpon  - 05/3/31(木) 21:10 -

引用なし
パスワード
   ponponです。こんばんは。
よくは、わかりませんが、
データが連続してないのでは?
連続していないと、
>RangeクラスのAutoFilterメゾットが失敗しました。
としかられるようですが、、、、
連続していれば、以下コードでちゃんと抽出できます。
違っていたら、すみません。
sub test()
Dim myRng As Range
  
 
  Set myRng = Range("A6")
               
  If Range("B2").Value2 = 0 Then
    myRng.AutoFilter Field:=2
  Else
    myRng.AutoFilter Field:=2, Criteria1:=Range("B2").Value
  End If
  
End Sub

【23650】Re:作り直して見ましたがエラーがでます。
発言  かおりん  - 05/4/1(金) 10:03 -

引用なし
パスワード
   ご返答ありがとうございます。
早速、以下のように並び替えを作り直してみましたが、
「実行時エラー'1004'RangeクラスのAutoFilterメゾットが失敗しました。」と表示されます。


左側の数字は、行数を表します。

15行目及か17行目でRangeクラスの・・が出てしまいます。
並び替え → 並び替え戻す →並び替え
と処理をすると出てきます。

また、
 条件1"E2"
 条件2"G2"
 条件3"I2"
 条件4"M2"
は条件1〜4に入力した物(コンボボックスで選ぶようにしています。)をフィルターをかけるようにしています。
また、アクティブセルではありません。


1 Sub 並び替え()
2 
3  Selection.AutoFilter
4  Range("a6:aa100").Select
5  Selection.AutoFilter
6     
7  With Range("a6:aa100")
8   If Range("e2").Value = 0 Then
9     .AutoFilter Field:=5
10   Else
11     .AutoFilter Field:=5, Criteria1:=Range("e2").value
12   End If
13  
14   If Range("g2").Value = 0 Then
15     .AutoFilter Field:=7
16   Else
17     .AutoFilter Field:=7, Criteria1:=Range("g2").Value
18   End If
19
20   If Range("i2").Value = 0 Then
21    .AutoFilter Field:=17
22   Else
23    .AutoFilter Field:=17, Criteria1:=Range("i2").Value
24   End If
25 
26   If Range("m2").Value = 0 Then
27    .AutoFilter Field:=13
28   Else
29    .AutoFilter Field:=13, Criteria1:=Range("m2").Value
30   End If
31   End With
32   
33 Range("f7").Select
34
35 End Sub

-----------------------------------------------------------------


Sub 並び替えを戻す()
'

  
Selection.AutoFilter
  Range("a6:aa100").Select
  Selection.AutoFilter

With Range("a6:aa100")
   .AutoFilter Field:=1
End With

  Selection.AutoFilter

End Sub

以上 ご意見お願いいたします。

【23685】Re:作り直して見ましたがエラーがでます。
発言  ponpon  - 05/4/1(金) 20:33 -

引用なし
パスワード
   ▼かおりん さん:
ponponです。こんばんは。

>3  Selection.AutoFilter
>4  Range("a6:aa100").Select
>5  Selection.AutoFilter
     ↑
   これは、何ですか?

下記コードで普通にできてますが・・・・
範囲を指定すると、空白列があっても大丈夫です。

Sub 並び替え()
  Dim myRng As Range
  
  Set myRng = Range("A4:AA100")
 
   
  With myRng
   If Range("e2").Value = 0 Then
     .AutoFilter Field:=5
   Else
     .AutoFilter Field:=5, Criteria1:=Range("e2").Value
   End If

   If Range("g2").Value = 0 Then
     .AutoFilter Field:=7
   Else
     .AutoFilter Field:=7, Criteria1:=Range("g2").Value
   End If

   If Range("i2").Value = 0 Then
    .AutoFilter Field:=17
   Else
    .AutoFilter Field:=17, Criteria1:=Range("i2").Value
   End If

   If Range("m2").Value = 0 Then
    .AutoFilter Field:=13
   Else
    .AutoFilter Field:=13, Criteria1:=Range("m2").Value
   End If
   End With

 Range("f7").Select
End Sub
'=================================================================

Sub 並び替えを戻す()

Range("a6:aa100").AutoFilter
   
End Sub


  

【23790】Re:作り直して見ましたがエラーがでます。
お礼  かおりん  - 05/4/4(月) 16:33 -

引用なし
パスワード
   ありがとうございました。解決です。


>3  Selection.AutoFilter
>4  Range("a6:aa100").Select
>5  Selection.AutoFilter

↑は、けしわすれでした。スミマセン。


元に戻すは、すごくすっきりで、あんなに簡単にできるんだと思いました。

 今回ご協力いただいたみなさまありがとうございます。

10086 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free