Sample Macro  画面制御 [基本型] Previous Next


1)更新 2)全画面表示 3)ズーム このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 画面更新の制御()
    Application.ScreenUpdating = False          '画面を更新しない
    Application.ScreenUpdating = True           '画面を更新する
End Sub
'=================================================================================
Sub 全画面表示の制御()
    Application.DisplayFullScreen = False       '全画面表示しない
    Application.DisplayFullScreen = True        '全画面表示する
End Sub
'=================================================================================
Sub ウインドウサイズに合わせてズームする()
    Range("A1:E5").Select                       'A1:E5にはズーム対象範囲を記入
    ActiveWindow.Zoom = True                    'ズームする
End Sub
'---------------------------------------------------------------------------------
Sub 指定された表示倍率でズームする()
    Range("A1:E5").Select                       'A1:E5にはズーム対象範囲を記入
    倍率 = 150                                  '150には%で記入
    ActiveWindow.Zoom = 倍率                    'ズームする
End Sub
'=================================================================================


4) リボン制御 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub リボンを非表示にする()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
End Sub
'---------------------------------------------------------------------------------
Sub リボンを表示する()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
End Sub
'=================================================================================
Sub リボンの表示状態を取得する()
    If Application.CommandBars("Ribbon").Visible = True Then
        MsgBox "リボンは表示されています。", , "すぐマク"
    Else
        MsgBox "リボンは表示されていません。", , "すぐマク"
    End If
End Sub
'=================================================================================
Sub 開発タブをリボンに表示する()
    Application.ShowDevTools = True
End Sub
'---------------------------------------------------------------------------------
Sub 開発タブを非表示にする()
    Application.ShowDevTools = False
End Sub
'=================================================================================
リボンと開発タブ(Excel2007以降)
 

5) コマンドバー制御 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub コマンドバーが表示されているか調べる()
    名前 = "Standard"                           '「標準」ツールバー
    If CommandBars(名前).Visible Then
        MsgBox CommandBars(名前).NameLocal & " は表示されています"
    Else
        MsgBox CommandBars(名前).NameLocal & " は表示されていません"
    End If
End Sub
'---------------------------------------------------------------------------------
Sub コマンドバーの一部の表示非表示を切り替える()
    名前 = "Formatting"                         '「書式設定」ツールバー
    If CommandBars(名前).Visible Then
        CommandBars(名前).Visible = False       '非表示にする
    Else
        CommandBars(名前).Visible = True        '表示にする ※1
    End If
End Sub
'---------------------------------------------------------------------------------
Sub すべてのコマンドバーの使用可否を切り替える()
Dim 各コマンドバー As CommandBar
    For Each 各コマンドバー In CommandBars      'コレクションの各要素に対して反復処理する
       各コマンドバー.Enabled = Not 各コマンドバー.Enabled '使用可否を切り替える
    Next                                        '繰り返す
End Sub
'---------------------------------------------------------------------------------
Sub 自作コマンドバーを画面の左端に表示する()
    Application.CommandBars("名前").Left = 0    '""内に自作コマンドバーの名前を指定する
End Sub
'=================================================================================
Sub アンサーウィザードのドロップダウンメニューの表示を切り替える()
    With Application.CommandBars
        If .DisableAskAQuestionDropdown = True Then
            .DisableAskAQuestionDropdown = False
        Else
            .DisableAskAQuestionDropdown = True
        End If
    End With
End Sub
'=================================================================================
<コメント>
※1 先行して Enabledプロパティに Trueが設定されていることが必要


6) 数式バー制御 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 数式バーを非表示にする()
    Application.DisplayFormulaBar = False   '※1
End Sub
'=================================================================================
Sub 数式バーの高さを設定する()
    行数 = 3                                '※2
    Application.FormulaBarHeight = 行数
End Sub
'---------------------------------------------------------------------------------
Sub 数式バーの高さを取得する()
    行数 = Application.FormulaBarHeight
    MsgBox " 数式バーの高さは " & 行数 & "行分です。", , "すぐマク"
    Application.FormulaBarHeight = 1        '標準に戻す
End Sub
'=================================================================================
<コメント>
※1 False:非表示にする、True:表示する
※2 3 には行数を記述する


7) ウィンドウの最大・最小化 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Private Sub Excelのアプリケーションウィンドウを最大化する()
    Application.WindowState = xlMaximized       'Macintoshでは設定できない
End Sub
'---------------------------------------------------------------------------------
Private Sub Excelのアプリケーションウィンドウを最小化する()
    Application.WindowState = xlMinimized       'Macintoshでは設定できない
End Sub
'---------------------------------------------------------------------------------
Private Sub Excelのアプリケーションウィンドウを最大化も最小化もしない()
    Application.WindowState = xlNormal
End Sub
'=================================================================================
<コメント>
※1 最小化すれば他の処理が可能(マクロの実行は続くので、終了時に最大化が必要)
※2 アプリケーションウィンドウは外枠、アクティブウィンドウは内枠
サンプルブックのダウンロードは ここをクリック (YNxv203_saidaika.xls 34KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


8) ウィンドウを分割 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub ウィンドウを分割する()
    With ActiveWindow
        .SplitColumn = 2                        '垂直分割線の左側の列数 ※1
        .SplitRow = 1                           '水平分割線の上側の行数 ※2
        .FreezePanes = True                     '分割ウィンドウ枠を固定する
    End With
End Sub
'---------------------------------------------------------------------------------
Sub ウィンドウの分割位置を取得する()
    MsgBox ActiveWindow.SplitColumn             'ウィンドウの左右分割位置を示す列数
    MsgBox ActiveWindow.SplitRow                'ウィンドウの上下分割位置を示す行数
End Sub
'=================================================================================
<コメント>
※1 2 には列数を記述
※2 1 には行数を記述


9) ウィンドウを並べて表示 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub ウィンドウを並べて表示する()                'そのブックにシートが3枚ある場合の例
    Sheets("Sheet3").Select
        ActiveWindow.NewWindow
    Sheets("Sheet2").Select
        ActiveWindow.NewWindow
    Sheets("Sheet1").Select
    Windows.Arrange ArrangeStyle:=xlTiled       '※1 タイル状に
    Windows.Arrange ArrangeStyle:=xlCascade     '※1 段々状に
    Windows.Arrange ArrangeStyle:=xlHorizontal  '※1 水平に
    Windows.Arrange ArrangeStyle:=xlVertical    '※1 垂直に
End Sub
'=================================================================================
<コメント>
※1 並べたい形によりどれかの行を生かす


10) ウィンドウをZオーダーで移動する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 指定したウィンドウをZオーダーで一番後ろに移動する() '※1
    Windows("Book2.xls").ActivateNext           '※2
End Sub
'---------------------------------------------------------------------------------
Sub Zオーダーで一番後ろのウィンドウをアクティブにする()
    ActiveWindow.ActivatePrevious
End Sub
'=================================================================================
<コメント>
※1 Zオーダーとは Z軸(奥行)方向の階層構造における順番
※2 例えば、Book1.xls にこのマクロを作成しておき、Book2.xls、Book3.xls の順で開いてから
   マクロを実行すると動きを理解しやすい


11) ウィンドウをスクロールする このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 指定した行番号が上端になるようにウィンドウをスクロールする()
    シート名 = "Sheet1"                         '※1
    Worksheets(シート名).Activate
    行番号 = 2                                  '※2
    ActiveWindow.ScrollRow = 行番号
End Sub
'---------------------------------------------------------------------------------
Sub 指定した列番号が左端になるようにウィンドウをスクロールする()
    シート名 = "Sheet1"                         '※1
    Worksheets(シート名).Activate
    列番号 = 3                                  '※2
    ActiveWindow.ScrollColumn = 列番号
End Sub
'---------------------------------------------------------------------------------
Sub アクティブシートのA1セルを選択してウィンドウをスクロールする()
    Application.Goto Range("A1")                '※3
End Sub
'---------------------------------------------------------------------------------
Sub 指定シートの指定セルを選択してウィンドウをスクロールする()
    シート名 = "Sheet1"                         '※1
    セル番号 = "E25"                            '※4
    Application.Goto Reference:=Worksheets(シート名)
        .Range (セル番号), scroll:=True         '※5
End Sub
'=================================================================================
<コメント>
※1 Sheet1 にはワークシート名を記入
※2 2 または 3 には行または列番号を記入
※3 ウィンドウ枠を固定している場合ばデータ部はスクロールされない
※4 E25 にはセル番号を記入
※5 ウィンドウ枠を固定している場合はデータ部の左上端セルとなる


12) スクロール可能領域を設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub スクロール可能領域を設定する()
    シート名 = "Sheet1"                         '※1
    Worksheets(シート名).ScrollArea = "A1:D10"  '※2
End Sub
'---------------------------------------------------------------------------------
Sub スクロール可能領域を使われたセル範囲に設定する()
    ActiveSheet.ScrollArea = ActiveSheet.UsedRange.Address
End Sub
'---------------------------------------------------------------------------------
Sub スクロール可能領域の設定を解除する()
    シート名 = "Sheet1"                         '※1
    Worksheets(シート名).ScrollArea = ""
End Sub
'=================================================================================
<コメント>
※1 Sheet1 にはワークシート名を記入
※2 A1:D10 にはセル番号を記入


13) マウスポインタの形状の取得と設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 現在のマウスポインタの形状を取得して表示する()
    形状 = Application.Cursor                   '定数の値を取得する
    If 形状 = -4143 Then
        説明 = "標準"
    ElseIf 形状 = 1 Then
        説明 = "北西矢印"
    ElseIf 形状 = 2 Then
        説明 = "砂時計"
    ElseIf 形状 = 3 Then
        説明 = "I 字"
    End If
    MsgBox "マウスポインタの形状は " & 説明 & "型 ( " & 形状 & " ) です", , "すぐマク"
End Sub
'---------------------------------------------------------------------------------
Sub マウスポインタの形状を標準型に設定する()
    Application.Cursor = xlDefault              '-4143 ※1 
End Sub
'=================================================================================
<コメント>
※1 xlMousePointerクラスの定数の値
形状 定数
標準型 xlDefault -4143
北西矢印型 xlNorthwestArrow 1
(砂)時計型 xlWait 2
I字型 xlIBeam 3
※2 マクロ終了時には xlDefaultに戻しておく(自動的にはリセットされない)


14) セルの枠線の表示・非表示 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Private Sub セルの枠線を表示する()
    ActiveWindow.DisplayGridlines = True
End Sub
'---------------------------------------------------------------------------------
Private Sub セルの枠線を非表示にする()
    ActiveWindow.DisplayGridlines = False
End Sub
'---------------------------------------------------------------------------------
Private Sub セルの枠線の表示と非表示を切り替える()
    ActiveWindow.DisplayGridlines = Not (ActiveWindow.DisplayGridlines)
End Sub
'=================================================================================
<コメント>
※1 DisplayGridlinesプロパティは、値の取得と設定が可能
※2 Trueなら表示、Falseなら非表示
サンプルブックのダウンロードは ここをクリック (YNxv203_Gridlines.xls 34KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


15) デスクトップを表示 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub デスクトップを表示する()
    CreateObject("Shell.Application").ToggleDesktop
End Sub
'=================================================================================


16) ウィンドウ左端からセル左端までの距離 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub アクティブウィンドウ左端からアクティブセル左端までの水平距離を取得する()
    Worksheets("SSS").Activate
    Range("A1").Select
        MsgBox ExecuteExcel4Macro("GET.CELL(42)") '※1、2
    Range("A100").Select
        MsgBox ExecuteExcel4Macro("GET.CELL(42)")
    Range("A1000").Select
        MsgBox ExecuteExcel4Macro("GET.CELL(42)")
    Range("A10000").Select
        MsgBox ExecuteExcel4Macro("GET.CELL(42)")
    Range("A" & Rows.Count).Select
        MsgBox ExecuteExcel4Macro("GET.CELL(42)")
End Sub
'---------------------------------------------------------------------------------
Sub 列Aの左端からアクティブセルの左端までの距離を取得する()
    Range("C3").Select
    MsgBox ActiveCell.Left                      '※3(ポイント単位)
End Sub
'---------------------------------------------------------------------------------
Sub 行1の上端からセル範囲の上端までの距離を取得する()
    Range("C3").Select
    MsgBox ActiveCell.Top                      '※3(ポイント単位)
End Sub
'=================================================================================
<コメント>
※1 ExecuteExcel4Macroメソッドは、Excel 4.0マクロ関数を実行して結果を返してくれる
※2 GET.CELL(42)関数に相当する Visual Basic の関数はない
※3 ポイント:印刷する文字のサイズ(高さ)を指定する基本単位(1ポイントは約0.0353cm、1/72インチ)


17) 行または列を挿入・削除 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 行を挿入する()
    Rows("4:5").Insert Shift:=xlDown            '※1 行番号で指定する方法
    Range("B2").EntireRow.Insert                '※2 セルで指定
End Sub
'---------------------------------------------------------------------------------
Sub 行を削除する()
    Rows("4:5").Delete Shift:=xlUp              '※1 行番号で指定する方法
    Range("B2").EntireRow.Delete                '※2 セルで指定
End Sub
'=================================================================================
Sub 列を挿入する()
    Columns("E:F").Insert Shift:=xlToRight      '※3 列名で指定する方法
    Range("B2").EntireColumn.Insert             '※4 セルで指定
End Sub
'---------------------------------------------------------------------------------
Sub 列を削除する()
    Columns("E:F").Delete Shift:=xlToLeft       '※3 列名で指定する方法
    Range("B2").EntireColumn.Delete             '※4 セルで指定
End Sub
'=================================================================================
<コメント>
※1 4:5には挿入または削除する行の上下行番号を記入
※2 B2には基準にする行内の任意のセルを記入
※3 E:Fには挿入または削除する列の左右列名を記入
※4 B2には基準にする列内の任意のセルを記入

18) 行または列を非表示・再表示 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 行を非表示_再表示する()
    Rows("4:5").EntireRow.Hidden = True        '4:5には非表示にする行の上下行番号を記入
    Rows("3:6").EntireRow.Hidden = False       '3:6には再表示したい行を囲む上下行番号記入
End Sub
'---------------------------------------------------------------------------------
Sub 列を非表示_再表示する()
    Columns("E:F").EntireColumn.Hidden = True  'E:Fには非表示にする列の左右列名を記入
    Columns("D:G").EntireColumn.Hidden = False 'D:Gには再表示したい列を囲む左右列名を記入
End Sub
'=================================================================================


19) 行の高さ・列の幅 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 行の高さを取得する()
    行の高さ = ActiveCell.RowHeight             '※1、3
    行の高さ = ActiveCell.Height                '※1
End Sub
'---------------------------------------------------------------------------------
Sub 行の高さの合計を取得する()
    行 = "2:4"                                 '2:4には変更する行範囲を記入
    行の高さの合計 = Range("A1:C3").Height       '※1
End Sub
'---------------------------------------------------------------------------------
Sub 行の高さを変更する()
    行 = "2:4"                                  '2:4には変更する行範囲を記入
    高さ = 5.25                                 '5.25には行の高さを記入 ※1
    Rows(行).RowHeight = 高さ
End Sub
'---------------------------------------------------------------------------------
Sub 行の高さを内容に合わせて調節する()
    行 = "2:4"                                  '2:4には変更する行範囲を記入
    Rows(行).AutoFit
End Sub
'---------------------------------------------------------------------------------
Sub 全ての行の高さを変更する()
    高さ = 11.25                                '11.25には行の高さを記入 ※1
    ActiveSheet.Cells.RowHeight = 高さ
End Sub
'---------------------------------------------------------------------------------
Sub 全ての行の高さを標準に設定する()
    ActiveSheet.Cells.UseStandardHeight = True
End Sub
'=================================================================================
Sub 列の幅を取得する()
    列幅P = ActiveCell.Width                    '※1
    列幅L = ActiveCell.ColumnWidth              '※2
End Sub
'---------------------------------------------------------------------------------
Sub 列の幅を変更する()
    列 = "F:F"                                  'F:Fには変更する列範囲を記入
    列幅L = 3.75                                '3.75には列の幅を記入 ※2
    Columns(列).ColumnWidth = 列幅L
End Sub
'---------------------------------------------------------------------------------
Sub 列の幅を内容に合わせて調節する()
    列 = "F:F"                                  'F:Fには変更する列範囲を記入
    Columns(列).AutoFit
End Sub
'---------------------------------------------------------------------------------
Sub 全ての列の標準の幅を設定する()
    標準列幅 = 10.38                            '10.38には標準にする列幅を記入 ※2
    ActiveSheet.StandardWidth = 標準列幅
End Sub
'---------------------------------------------------------------------------------
Sub 全ての列の幅を標準に設定する()
    ActiveSheet.Cells.UseStandardWidth = True
End Sub
'=================================================================================
<コメント>
※1 単位はポイント:印刷する文字のサイズ(高さ)を指定する基本単位
   1ポイントは約0.0353cm(1/72インチ)
※2 単位は標準スタイルの1文字分の幅 (プロポーショナルフォントでは数字の0の幅)
※3 指定したセル範囲のすべての行の高さが同じでないときはNull値が返る


20) ひとつ飛びに処理 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub ひとつ飛びに足す()
    Worksheets("SSS").Activate              '※1
    列 = 8                                  '※2 合計する列
    上 = 3                                  '※2 合計する列の上端行
    下 = 11                                 '※2 合計する列の下端行
    合計セル = "H13"                        '※3 合計を格納するセルの番号
    Range(合計セル).Value = 0               '合計セルをゼロにしておく
    For 行 = 上 To 下 Step 2                '※4 上端から始めて2行ごとに下端になるまで
        If Range(Cells(行, 列), Cells(行, 列)).Value <> "" Then 'セルの値がヌルでなければ
            Range(合計セル).Value = Range(合計セル).Value + _
            Range(Cells(行, 列), Cells(行, 列)).Value '合計セルに加える
        End If
    Next
End Sub
'=================================================================================
<コメント>
※1 SSSにはシート名を記入
※2 8、3、11には合計する列の、列番号、上端行番号、下端行番号を記入
※3 合計を格納するセルの番号を記入
※4 飛び間隔を変えたい場合は、Step の右の数値を変える(この例は2行間隔を意味する)
サンプルブックのダウンロードは ここをクリック (YNxv204_tobi.xls 39KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


21) 行・列数の取得 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 選択範囲の行列数を取得する()
    行数 = Selection.Rows.Count
    列数 = Selection.Columns.Count
End Sub
'---------------------------------------------------------------------------------
Sub アクティブシートの行列数を取得する()
    総行数 = ActiveSheet.Rows.Count             '※1
    総列数 = ActiveSheet.Columns.Count          '※1
End Sub
'=================================================================================
<コメント>
※1 ワークシート以外の場合は失敗する


22) 数式のセル参照を変換する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セル参照を変換_R1C1からA1へ_列行とも相対参照()
    変換前 = "R3C5"                             '※1
    変換後 = Application.ConvertFormula(Formula:=変換前, _
            fromReferenceStyle:=xlR1C1, _
            toReferenceStyle:=xlA1, ToAbsolute:=xlRelative)
End Sub
'---------------------------------------------------------------------------------
Private Sub 数式の参照形式を変換する_R1C1からA1へ()
    変換前 = "=SUM(R2C1:R5C1)"                  '※2
    変換後 = Application.ConvertFormula(Formula:=変換前, _
            fromReferenceStyle:=xlR1C1, toReferenceStyle:=xlA1)
End Sub
'=================================================================================
<コメント>
※1 R3C5には変換したいセル参照(引数fromReferenceStyleで指定する形式で)を記入
※2 =SUM(R2C1:R5C1)には変換したい数式のセル参照(同上)を記入
※3 ConvertFormulaメソッドは数式のセル参照を変換する (A1形式:R1C1、相対参照:絶対、その両方)
構文 expression.ConvertFormula(Formula, FromReferenceStyle, ToReferenceStyle, ToAbsolute, RelativeTo )
   expression  Applicationと指定 必須
   Formula   変換対象の数式文字列 必須
   FromReferenceStyle  変換前の参照形式(xlA1 or xlR1C1) 必須
   ToReferenceStyle   変換後の参照形式(同上) 省略するとFromReferenceStyleに同じ
   ToAbsolute  変換後の参照の種類(定数は下記サンプルブック参照) 省略すると従来どおり
   RelativeTo   相対参照の基準となるセル 省略可
サンプルブックのダウンロードは ここをクリック (YNxv204_ConvertFormula.xls 38KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。

Excel VBA Macro