| プライバシーポリシー |

ExcelVBA Tip集  

このページでは、少しでも皆様のExcelVBA(マクロ)プログラミングでの気付きやヒントになればと思い、Tipなどをご紹介しています。

(参考)
下記 例.にある様に説明欄のタイムスタンプのクリックですぐに該当シーンから再生可能です。
例.説明欄のタイムスタンプ




表示形式

[参考資料 - 表示形式]のページはこちら


ブックを開く時の処理

コード例
Sub ProtectAllSheet()
    Dim curWs As Worksheet
    Dim ws As Worksheet

    Set curWs = ActiveSheet

    Application.ScreenUpdating = False
    For Each ws In Worksheets
        With ws
            .Activate
            .Range("A1").Select
            .EnableSelection = xlUnlockedCells
            .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        End With
    Next
    Application.ScreenUpdating = True

    ThisWorkbook.Protect Structure:=True, Windows:=False

    curWs.Activate
End Sub

Sub UnprotectAllSheet()
    Dim curWs As Worksheet
    Dim ws As Worksheet

    Set curWs = ActiveSheet

    For Each ws In Sheets
        With ws
            .EnableSelection = xlNoRestrictions
            .Unprotect
        End With
    Next

    ThisWorkbook.Unprotect

    curWs.Activate
End Sub


[閉じる]ボタンを作ってみた!


シートの表の選択セルを見やすくしたい!

コード例
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim r As Long, c As Long

    If Sh.Name Like "#月" Or Sh.Name Like "##月" Then '特定のシートのみ
        'Application.EnableEvents = False 'SelectionChangeイベント発生する処理がある場合は記述

        '前回の塗りつぶしクリア
        Cells.Interior.Pattern = xlNone

        'If Target.Count = 1 Then '一つのセル選択のみ(Exce2003まで)
        If Target.CountLarge = 1 Then '一つのセル選択のみ(Exce2007から)
           '選択セルの行番号と列番号の取得
            r = Target.Row
            c = Target.Column

            '塗りつぶし
            If r >= 2 And c >= 2 Then '項目名と日付部分は対象外
                Range(Cells(r, 1), Cells(r, c)).Interior.ColorIndex = 40 'ベージュ
                Range(Cells(1, c), Cells(r, c)).Interior.ColorIndex = 40 'ベージュ
            End If
        End If

        'Application.EnableEvents = True 'SelectionChangeイベント発生する処理がある場合は記述
    End If
End Sub