Sample Macro  画面制御 [応用型] Previous Next

1) ウィンドウの大きさを設定する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Private Sub Excelアプリケーションウィンドウを画面の下半分に表示する()
    With Application
        .WindowState = xlMaximized              '※1 ウィンドウの状態
        幅 = .Width                             'アプリケーションウィンドウの幅
        高さ = .Height / 2                      'アプリケーションウィンドウの高さの半分
        .WindowState = xlNormal
        .Left = 0                               '画面左端からの距離
        .Top = 高さ                             '画面上端からの距離
        .Width = 幅                             'ウィンドウの高さ
        .Height = 高さ                          'ウィンドウの幅
    End With
End Sub
'=================================================================================
Private Sub アクティブウィンドウの大きさを変更できないようにする()
    With ActiveWindow
        .WindowState = xlNormal
        .Top = 1                            'ウィンドウ上端から使用可能領域上端までの距離
        .Left = 1                        'クライアント領域左端からウィンドウ左端までの距離
        .Height = 480                           '(480は例)
        .Width = 640                            '(640は例)
        .EnableResize = False                   '※2 サイズ変更を不可能に
    End With
    ActiveWindow.EnableResize = True            '※2 サイズ変更を可能に
End Sub
'-------------------------------------------------------------------------------------
Private Sub アクティブウィンドウを可能な限り大きく表示する()
    With ActiveWindow
        .WindowState = xlNormal
        .Top = 1
        .Left = 1
        .Height = Application.UsableHeight
        .Width = Application.UsableWidth
    End With
    ActiveWindow.WindowState = xlMaximized      '最大化
End Sub
'=================================================================================
<コメント>
※1 xlMaximized:最大化、xlMinimized:最小化、xlNormal:フロート表示
※2 False:変更不可能、True:変更可能


2) CommandBarsコレクションを取得する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub CommandBarsコレクションを取得する()
    Worksheets("Sheet1").Activate
    Cells.Clear
    Cells(1, 1) = "インデックス番号"
    Cells(1, 2) = "名前"
    Cells(1, 3) = "ローカル名"
    Cells(1, 4) = "表示状態"
    行 = 2
    For Each cbar In CommandBars            'コレクションの各要素に対して反復処理する
        Cells(行, 1) = cbar.Index           'メニューバーとツールバーのインデックス番号
        Cells(行, 2) = cbar.Name            '名前
        Cells(行, 3) = cbar.NameLocal       'ローカル名
        Cells(行, 4) = cbar.Visible         '表示されているかどうか
        行 = 行 + 1
    Next                                    '繰り返す
    Columns("A:D").EntireColumn.AutoFit
    Range("A1").Select
End Sub
'=================================================================================


3) 標準ツールバーのコントロールのラベルID取得する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 標準ツールバーのコントロールのラベルとIDを取得する()
    Worksheets("Sheet2").Activate
    i = 1
    For Each 各コントロール In CommandBars("Standard").Controls '※1
        Cells(i, 1) = 各コントロール.Caption    'ラベル
        Cells(i, 2) = CStr(各コントロール.ID)   'ID
        i = i + 1
    Next
End Sub
'=================================================================================
<コメント>
※1 書式設定ツールバーなら "Formatting"


4) 書式設定ツールバーからフォント名を取得する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 書式設定ツールバーのフォントコントロールのリストからフォント名を取得する()
    Worksheets("Sheet3").Activate
    With Application.CommandBars("Formatting")  '書式設定ツールバー
        .Reset                                  'リセットする
        With .Controls(1)                       'フォント(&F)コントロール
            For 行 = 1 To .ListCount
                Cells(行, 1) = .List(行)        'フォント名
            Next
        End With
    End With
End Sub
'=================================================================================
5) 指定されたコマンドバーコントロールを表示する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 指定されたコマンドバーコントロールを表示する()
    コントロールのID = 1849                     '検索と置換ダイアログボックス
    Application.CommandBars.FindControl(ID:=コントロールのID).Execute
End Sub
'=================================================================================
使用可能なExcelのバージョン
'=================================================================================
Sub 指定されたコマンドバーコントロールを表示する_2007以降()
    Application.CommandBars.ExecuteMso "FindDialogExcel" '検索と置換ダイアログボックス
End Sub
'=================================================================================

6) 指定年月日以前のデータ行を削除する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 指定年月日以前のデータを抽出してその行を削除する()
    Worksheets("SSS").Activate                  '※1
    Range("A1").Select
    If Not ActiveSheet.AutoFilterMode Then      'オートフィルターモードでないなら
        Selection.AutoFilter                    'オートフィルターをオンにする
    End If
    Rows("2:2").Select                          '2行目を選択する
    Range(Selection, Selection.End(xlDown)).Select '2行目から下端行までを選択する
    抽出列 = 1                                  '※2 A列
    抽出キー = "<=2012/6/30"                    '※3 この年月日以前
    Selection.AutoFilter Field:=抽出列, Criteria1:=抽出キー 'オートフィルターする
    Selection.Delete Shift:=xlUp                '抽出された行を削除する
    Selection.AutoFilter                        'オートフィルターをオフにする
End Sub
'=================================================================================
<コメント>
※1 SSSにはシート名を記入
※2 オートフィルターする列の列番号を記入
※3 オートフィルターのキーを記入
 
サンプルブックのダウンロードは ここをクリック (YNxv254_RowDelete.xls 46KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。

Excel VBA Macro










VBAの本 こちら















マクロ本 こちら























Excel本 こちら