日本語入力ソフトとVBAの覚え書き

・各種日本語入力ソフトの辞書解説 ・ちょっと楽になるWord/Excel VBA集 ・ボーダーブレイク用語辞書

シートのインデックスと名前と数、表示と非表示の制御


f:id:dz_dzone:20170814233145j:plain

シートのインデックス番号と名前

現在のシートのインデックス番号と名前を表示する

ActiveSheet.Index 'シートのインデックス
ActiveSheet.Name  'シートの名前

Msgboxに表示させます。

Sub GetSheetName()
    MsgBox "現在のシート" & vbCrLf & _
        "Index = " & ActiveSheet.Index & vbCrLf & _
        "Name = " & ActiveSheet.Name
End Sub

結果表示
f:id:dz_dzone:20170413154323j:plain

シートを移動させたらインデックス番号はどうなる?

Sheet2を左端に移動してみます。
f:id:dz_dzone:20170413162528j:plain
Indexが1になりました。Indexはあくまでもシートの左からの順番だということが分かります。

ブックに含まれるすべてのシートのインデックスと名前を表示する

Sub GSN_All()
    Dim myShts As Object
    Dim SN As String
    SN = "Index:Name" & vbCrLf
    
    For Each myShts In ActiveWorkbook.Sheets
        SN = SN & myShts.Index & ":" & myShts.Name & vbCrLf
    Next myShts
    
    MsgBox SN
End Sub

f:id:dz_dzone:20170919093214j:plain

ブックに含まれるシートの数は?

Sub GetSheetCount()
    MsgBox Worksheets.Count
End Sub

f:id:dz_dzone:20170919093322j:plain

シートの非表示と再表示

シートの表示と非表示の制御はシートのVisibleプロパティで行います。

    Sheets("Sheet1").Visible = True または False または xlVeryHidden

選択したシートを非表示にする

メニュー操作の場合

f:id:dz_dzone:20170919105320j:plain

注意点:全てのシートを非表示にしようとすると次のエラーダイアログが出ます。
f:id:dz_dzone:20170919105419j:plain

VBAの場合
Sub SheetInvisible()
    ActiveWindow.SelectedSheets.Visible = False
End Sub

メニュー操作と同様、全てのシートを非表示にしようとするとエラーが出ます。エラー処理の追加が必要です。
f:id:dz_dzone:20170919105737j:plain

非表示のシートを再表示する

メニュー操作の場合

f:id:dz_dzone:20170919110018j:plain
f:id:dz_dzone:20170919110039j:plain

VBAの場合
Sub AllSheetsVisible()
    Dim myShts As Object
    For Each myShts In ActiveWorkbook.Sheets
        myShts.Visible = True
    Next myShts
End Sub

全てのシートをFor Each ~ Nextで一つずつ回してVisibleプロパティをTrueにしていきます。

メニュー操作で再表示出来ないようにする

    Sheets("Sheet1").Visible = xlVeryHidden

VisibleプロパティをxlVeryHiddenにするとメニュー操作で再表示が出来ないようにシートを非表示に出来ます。このシートを再表示する場合は、メニュー操作ではなくVBAコードで表示させてください。

以上。

にほんブログ村 IT技術ブログ VBAへ←記事を気に入って頂けたらポチッとしてもらえると励みになります。