0

ユーザーがシート 1 で選択したドキュメントを電子メールで送信する Excel VBA プロジェクトがあります。シート 1 には、列 1 と列 2 の 2 つの列があります。列 2 には、すべてのドキュメントがハイパーリンクとしてリストされ、ユーザーが選択したい場合ドキュメントの Column1 に「x」を入力します。次に、ユーザーは [送信] ボタンをクリックして電子メールを送信します。ボタン クリック イベントのコードは次のとおりです。

…
    Set Ash = ActiveSheet
    On Error GoTo cleanup

            Ash.Range("A5:B500").AutoFilter Field:=1, Criteria1:="x"

            For Each cell In Ash.Range("B5:B300").SpecialCells(xlCellTypeVisible)
                If cell.Offset(0, -1).Value = "x" Then
                    …
                End If
            Next
…
cleanup:
    Set OutApp = Nothing
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
 …

私の問題は、エラーが発生したときに発生します。ユーザーが [送信] ボタンをクリックした後、エラーが発生した場合、Sheet1 ではそれらのドキュメントのみが選択され、他のすべてのドキュメントは除外されます。また、各列の上部にフィルター ボタンが表示されます。これは、何か問題が発生していることをユーザーに認識してもらいたいため、問題ありません。

私の問題は、フィルター設定を変更したり、フィルターから元に戻したりできないことです。Excel を閉じてから再度開く必要があります。Column1 の上にあるフィルター ボタンをクリックしてフィルターをクリアし、他のすべてのドキュメントを元に戻す方法はありますか?

4

1 に答える 1

0

このようなもの?

Sub ToggleAutofilter()
    ' check if autofilter is currently off
    If ActiveSheet.FilterMode = False Then
        ' if it's off, turn it on, and filter on "Nick"
        Range("d5").AutoFilter Field:=1, Criteria1:="Nick"
    Else
        ' if it's on, turn it off
        Range("d5").AutoFilter
    End If
End Sub

このリンクを参照してください。

于 2013-12-03T08:17:57.153 に答える