プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[Excel] [VBA] 全てのシートを選択する

VBAですべてのシートを選択したい場合、
Worksheets.Select
の一文のみで選択されます。

ただし、これを実行した場合、エラーになる時があります。

「アプリケーション定義またはオブジェクト定義のエラーです。」
Image

原因は、非表示シートです。
非表示にしているシートがあると、Worksheets.Selectは失敗します。
もう少し具体的なエラーだったらいいのですが、この原因を見つけるまでにしばらくかかりました。

というわけで、非表示シートを除外して、全てのシートを選択する関数を作りました。

'
' 全てのシートを選択する
' 非表示シートは含めない
'
Sub AllSheetsSelect()
    Dim i As Long
    Dim sh As Worksheet
    Dim targetSheets() As String
    
    ReDim targetSheets(0)
    
    For Each sh In ActiveWorkbook.Worksheets
        If sh.Visible = xlSheetVisible Then
            ReDim Preserve targetSheets(i)
            targetSheets(i) = sh.Name
            i = i + 1
        End If
    Next sh
    
    If targetSheets(0) = "" Then Exit Sub
    
    Worksheets(targetSheets).Select
End Sub

表示されているシートのみの配列を作成して、Selectします。
「If sh.Visible = xlSheetVisible Then」ここの条件を変えれば、他にも選択条件を追加することができます。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください