0

午後は学校行事のDBを作っています。ユーザーがクラスの種類や年齢層、学年でフィルター処理できるピボット テーブルを制御するフォームを使用して、検索オプションを作成しようとしています。

このコードを VBA で書いたのですが、うまくいきません。上記の 1 つ (クラス タイプなど) のみをフィルター処理するコードを作成しようとすると機能しましたが、3 つのフィルター オプションに拡張すると機能しません。オプションの 1 つに値が挿入されていない場合は失敗します。

search_class.Hide
ActiveSheet.PivotTables("PivotSearchClass").PivotFields("class type").ClearAllFilters

If IsNull(Range("type_search").Value) Then
    ActiveSheet.PivotTables("PivotSearchClass").PivotFields("class type").CurrentPage = "(All)"
Else: ActiveSheet.PivotTables("PivotSearchClass").PivotFields("class type").CurrentPage = Range("type_search").Value
End If

type_box = "pick a class type"

ActiveSheet.PivotTables("PivotSearchClass").PivotFields("group age").ClearAllFilters

If IsNull(Range("target_search").Value) Then
    ActiveSheet.PivotTables("PivotSearchClass").PivotFields("group age").CurrentPage = "(All)"
Else: ActiveSheet.PivotTables("PivotSearchClass").PivotFields("group age").CurrentPage = Range("target_search").Value
End If

target_box = "pick a group age"

ActiveSheet.PivotTables("PivotSearchClass").PivotFields("school year").ClearAllFilters

If IsNull(Range("year_search").Value) Then
    ActiveSheet.PivotTables("PivotSearchClass").PivotFields("school year").CurrentPage = "(All)"
Else:
ActiveSheet.PivotTables("PivotSearchClass").PivotFields("school year").CurrentPage = Range("year_search").Value
End If

year_search_box = "pick a school year"   

ActiveSheet.PivotTables("PivotSearchClass").PivotCache.Refresh  

問題が何であるか、そしてそれを修正する方法を知っている人はいますか?

4

2 に答える 2

1

テストを次のいずれかに変更するとうまくいくと思います:

If IsEmpty(Range("type_search").Value)

また

If Range("type_search").Value = ""

IsNullバリアント変数に null 値が含まれているかどうかをテストするために使用されます。これは、空白のセルまたは塗りつぶされたセルでは true になりません。

于 2012-12-17T02:35:09.317 に答える
0

このコンピュータには Excel がなく、ピボット テーブルが苦手ですが、これについてはあなただけのようです。最初に、スクリプトが実際に if ステートメントの「True」ケースを実行していることを確認してから、CurrentPage の値を編集して、問題があるかどうかを確認します (つまり、「(all)」値を別のものに変更します)。エラーはどこにあり、エラーの説明は何ですか?

于 2012-12-16T19:37:35.107 に答える