Sample Macro  セル制御 [基本型] Previous Next


1) セルの挿入・削除 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルを挿入する()
    基準セル = "B3"                             '※1
    Range(基準セル).Insert Shift:=xlShiftDown   '※2
End Sub
'---------------------------------------------------------------------------------
Sub セルを削除する()
    基準セル = "B3"                             '※1
    Range(基準セル).Delete Shift:=xlShiftUp     '※2
End Sub
'=================================================================================
<コメント>
※1 挿入または削除するセル番号を記入
※2 xlShiftDown:下方向、xlShiftToRight:右方向 (セル挿入後に他のセルをシフトする方向)
※3 xlShiftUp:上方向、xlShiftToLeft:左方向 (セル削除後に他のセルをシフトする方向)


2) 数字、空白、日付、数式? このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルの内容が数字か調べる()
    Range("A1").Select                          'A1には調べたいセルを記入
    If Not IsNumeric(ActiveCell.Value) Then
        MsgBox "数字ではない"
    ElseIf IsNumeric(ActiveCell.Value) Then
        MsgBox "数字またはヌルです"
    End If
End Sub
'---------------------------------------------------------------------------------
Sub セルの内容が空白か調べる()
    行 = 1                                      '調査対象セルの行番号
    列 = 1                                      '   〃   列番号
    If Cells(行, 列) = "" Then                  '調査対象セルがNull文字列なら ※1
        MsgBox 行 & "行" & 列 & "列セルは、空白(Null文字列)です"
    ElseIf Cells(行, 列) = " " Then             '調査対象セルが半角スペースなら
        MsgBox 行 & "行" & 列 & "列セルは、空白(半角スペース)です"
    ElseIf Cells(行, 列) = " " Then            '調査対象セルが全角スペースなら
        MsgBox 行 & "行" & 列 & "列セルは、空白(全角スペース)です"
    End If
End Sub
'---------------------------------------------------------------------------------
Sub セルの内容が日付か調べる()
    セル = "A3"                                 'A3には調べたいセルを記入
    If IsDate(Range(セル).Value) = True Then
        MsgBox セル & "セルの値は日付です。"
    Else
        MsgBox セル & "セルの値は日付ではありません。"
    End If
End Sub
'---------------------------------------------------------------------------------
Sub セルの内容が数式か調べる()
    If Range("A3").HasFormula = True Then       'A3には調べたいセルを記入
        MsgBox "数式セルです"
    End If
End Sub
'=================================================================================
Sub 数式セルの数式を表示する()
    For Each 各セル In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
        MsgBox 各セル.Address & "セル … " & 各セル.Formula
    Next
End Sub
'=================================================================================
Sub 数式を保護して非表示にする()
    With Cells.SpecialCells(xlCellTypeFormulas, 23) '数式セルを選択する
        .Locked = True                          '※2
        .FormulaHidden = True                   '※3
    End With
    ActiveSheet.Protect                         'シートを保護する
End Sub
'=================================================================================
<コメント>
※1 ""は、Null文字列または長さが0の文字列と呼ばれ、セルを選択して[Delete]キーを押した場合
※2 シートが保護されているときはセルをロックする
※3 シートが保護されているときは数式を非表示にする


3) エラー値か? このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルのエラー値を調べる()                     '※1
    Range("A1").Select                          'A1には調べたいセルを記入
    If IsError(ActiveCell.Value) Then
        errval = ActiveCell.Value
        Select Case errval
            Case CVErr(xlErrDiv0)
                MsgBox "#DIV/0! エラー"
            Case CVErr(xlErrNA)
                MsgBox "#N/A エラー"
            Case CVErr(xlErrName)
                MsgBox "#NAME? エラー"
            Case CVErr(xlErrNull)
                MsgBox "#NULL! エラー"
            Case CVErr(xlErrNum)
                MsgBox "#NUM! エラー"
            Case CVErr(xlErrRef)
                MsgBox "#REF! エラー"
            Case CVErr(xlErrValue)
                MsgBox "#VALUE! エラー"
            Case Else
                MsgBox "ありえないケースです!!"
        End Select
    End If
End Sub
'=================================================================================
<コメント>
※1 Excelのヘルプより転載


4) セルの書式設定ダイアログボックス このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルの書式設定ダイアログボックスを表示する()
    Worksheets("SSS").Activate                  '※1 ワークシートをアクティブにする
        Range("A1").Select                      '※2 セル範囲を選択する
    ActiveSheet.Unprotect                       '※3 シート保護を解除する
        Application.Dialogs(xlDialogFormatNumber).Show  '表示形式
        Application.Dialogs(xlDialogAlignment).Show     '配置
        Application.Dialogs(xlDialogFontProperties).Show 'フォント
        Application.Dialogs(xlDialogBorder).Show        '罫線
        Application.Dialogs(xlDialogPatterns).Show      'パターン
        Application.Dialogs(xlDialogCellProtection).Show '保護
    ActiveSheet.Protect                         'シートを保護する
End Sub
'---------------------------------------------------------------------------------
Sub フォントの設定ダイアログボックスを表示する()
    ActiveSheet.Unprotect                       'シート保護を解除する
        Application.Dialogs(xlDialogFormatFont).Show
    ActiveSheet.Protect                         'シートを保護する
End Sub
'=================================================================================
<コメント>
※1 "SSS"にはシート名を記入
※2 "A1"には書式設定したいセル範囲を記入
※3 セルの書式設定はシートが保護されているとできない
※4 下表の項目をクリックするとサンプルが見れます(見終ったら×ボタンで閉じる)
表示形式 配置 フォント 罫線
パターン 保護 フォント2 .


5) セルの書式の表示形式設定(数字・日付) このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Private Sub 前ゼロを付けて6桁に揃える_行指定()
    Worksheets("SSS").Rows(20).NumberFormat = "000000"          '※1、2、3
End Sub
'---------------------------------------------------------------------------------
Private Sub 前ゼロを付けて5桁に揃える_範囲指定()
    Worksheets("SSS").Range("A2:J2").NumberFormat = "00000"     '※1、2、3
End Sub
'---------------------------------------------------------------------------------
Private Sub カンマを入れてゼロサプレスする_範囲指定()
    Worksheets("SSS").Range("A20:E20").NumberFormat = "###,##0" '※1、2、3
End Sub
'---------------------------------------------------------------------------------
Private Sub 小数点を入れてゼロサプレスする_列指定()
    Worksheets("SSS").Columns("J").NumberFormat = "##,###.#0"   '※1、2、3
End Sub
'---------------------------------------------------------------------------------
Private Sub 負の数を色で表す書式にする_範囲指定()
    Worksheets("SSS").Range("A2:A20").NumberFormatLocal = "#,##0;[赤]#,##0" '※1、2、4
End Sub
'---------------------------------------------------------------------------------
Private Sub 文字列にする_列指定()
    Worksheets("SSS").Columns("A:B").NumberFormat = "@"         '※1、2、3
End Sub
'=================================================================================
Private Sub セルの値を表示されないようにする()
    Worksheets("SSS").Range("A2").NumberFormatLocal = ";;;"     '※1、2
End Sub
'=================================================================================
Private Sub 日付の表示形式を和暦に設定する_HS型()                 	'※5
    Worksheets("SSS").Range("A1").NumberFormatLocal = "[$-411]ge.m.d" '※1、7
End Sub
'---------------------------------------------------------------------------------
Private Sub 日付の表示形式を和暦に設定する_平成型()               	'※6
    Worksheets("SSS").Range("A1").NumberFormatLocal = _
        "[$-411]ggge""年""m""月""d""日"""                        '※1、7
End Sub
'=================================================================================
<コメント>
※1 "SSS"には、ワークシートの名前を記入する
※2 Rows( )、Range( )、Columns( )などで範囲を指定する
※3 "000000"、"###,##0"、"@" などには書式を記入
※4 書式中の ;[赤] で指定する色は変更可能、Macintoshでは英字で記述
サンプルブックのダウンロードは ここをクリック (YNxv205_NumberFormat.xls 40KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
※5 たとえば 2013/6/26 が H25.6.26 のように表示される
※6 たとえば 2013/6/26 が 平成25年6月26日 のように表示される
※7 []内の $-411 はロケールID(LCID)、下記は一例
ロケール名 言語コード 16進数 10進数
日本語 ja 0x0411 1041
英語 (U.S.) en-us 0x0409 1033
ポルトガル語 (ブラジル) pt-br 0x0416 1046
韓国語 ko 0x0412 1042


6) 配置の書式設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 配置の書式設定()
    セル範囲 = "A2:A10"                         '※1
    With Range(セル範囲)
        .HorizontalAlignment = xlGeneral        '※2 配置(横位置)を標準に
        .VerticalAlignment = xlCenter           '※3 配置(縦位置)を中央揃えに
        .WrapText = False                       '文字の制御
        .Orientation = 0                        '文字列の向き
        .AddIndent = False                      'インデント
        .IndentLevel = 0                        'インデントのレベル
        .ShrinkToFit = False                    '文字列の縮小
        .ReadingOrder = xlContext               '文字の方向(読む順序)
        .MergeCells = False                     'セル結合
    End With
End Sub
'=================================================================================
<コメント>
※1 A2:A10にはセル範囲を記入
※2 HorizontalAlignmentプロパティの定数
定数 左の機能 定数 左の機能
xlGeneral 標準 xlCenter 中央揃え
xlLeft 左詰め (インデント) xlRight 右詰め (インデント)
xlJustify 両端揃え xlDistributed 均等割り付け (インデント)
xlCenterAcrossSelection 選択範囲内で中央 xlRight 右詰め (インデント)
※3 VerticalAlignmentプロパティの定数
定数 左の機能 定数 左の機能
xlCenter 中央揃え  
xlTop 上詰め xlBottom 下詰め
xlJustify 両端揃え xlDistributed 均等割り付け


7) 文字の制御 (折り返し・縮小・セル内改行) このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub アクティブシートの文字列を列幅で折り返す()
    Worksheets("SSS").Activate                          '※1
    Range("A1:B1").WrapText = True                      '※2、3
End Sub
'---------------------------------------------------------------------------------
Sub ほかのシートの文字列を列幅で折り返す()
    Worksheets("SSS").Range("A1:B1").WrapText = True    '※1、2
End Sub
'=================================================================================
Sub 文字を縮小して全体を表示する()
    Worksheets("SSS").Activate                          '※1
    Range("A1:B1").ShrinkToFit = True                   '※2、4
End Sub
'=================================================================================
Sub 文字列をセル内で改行する()
    Range("A1").Value = "1行目" & vbLf & "2行目"        '※5
End Sub
'---------------------------------------------------------------------------------
Sub セル内改行を削除する()
    Cells.Replace What:="" & Chr(10) & "", Replacement:="" '※5
End Sub
'=================================================================================
Sub 印刷できない文字を削除する()
    印刷できる文字列 = WorksheetFunction.Clean(Range("A1")) '※2
End Sub
'=================================================================================
<コメント>
※1 "SSS"には、ワークシートの名前を記入する
※2 A1:B2、C1:D2にはセル範囲を記入
※3 事前に行の高さを変更したことがなければ、必要に応じて自動的に調節される
※4 True:設定、False:解除
※5 vbLf … ラインフィード … Chr(10)


8) セルの結合 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルを結合する()
    Range("A1:B3").Merge                        '※1
End Sub
'---------------------------------------------------------------------------------
Sub セルを行ごとに結合する()
    Range("A4:B6").Merge (True)                 '※1
End Sub
'---------------------------------------------------------------------------------
Sub 結合セルを含んだセル範囲を結合する()
    Range("B2:E2").MergeCells = True            '※1
End Sub
'---------------------------------------------------------------------------------
Sub 指定セルを含んだ結合セル範囲を取得する()
    指定セル = "B2"                             '※1
    MsgBox Range(指定セル).MergeArea.Address
End Sub
'---------------------------------------------------------------------------------
Sub セル結合を解除する()
    Range("A1").UnMerge                         '※2
End Sub
'---------------------------------------------------------------------------------
Sub セル結合を解除する_2()
    Range("B2").MergeCells = False              '※2
End Sub
'=================================================================================
<コメント>
※1 A1:B3、A4:B6、B2:E2、B2にはセル範囲を記入
※2 A1、B2にはすでに結合されているセル範囲の中のどれかのセルを記入



9) フォントの書式設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルのフォントのスタイルを設定する()
    Range("A1:A2").Font.Bold = True             '太字にする(アクティブシートの指定セル)※1
    Sheets("SSS").Range("B1").Font.Bold = False '太字にしない(指定シートの指定セル) ※1,2
    Sheets("SSS").Cells.Font.Italic = True      '斜体にする(指定シートのすべてのセル) ※2
End Sub
'---------------------------------------------------------------------------------
Sub セルの文字の一部のフォントの書式を設定する()
    With ActiveCell.Characters(4, 3).Font       '※3、※4
        .Name = "MS ゴシック"                 'フォント名
        .FontStyle = "太字 斜体"                'スタイル
        .Size = 11                              'サイズ
        .Strikethrough = False                  '取消線     True:する  False:しない
        .Superscript = False                    '上付き文字 True:する  False:しない
        .Subscript = False                      '下付き文字 True:する  False:しない
        .Underline = xlUnderlineStyleNone       '下線の種類 ※5
        .ColorIndex = xlColorIndexAutomatic   '輪郭線,フォント,罫線,内部の塗りつぶし等の色
    End With
End Sub
'---------------------------------------------------------------------------------
Sub セルのフォントに下線を設定する()
    セル = "A1"
    Range(セル).Font.Underline = xlUnderlineStyleSingle '※5
End Sub
'---------------------------------------------------------------------------------
Sub セルのフォントの下線を削除する()
    セル = "A1"
    Range(セル).Font.Underline = xlUnderlineStyleNone   '※5
End Sub
'---------------------------------------------------------------------------------
Sub 下線付き文字数を取得する()
    セル = "A1"
    下線付き文字数 = 0
    With Range(セル)
        For I = 1 To Len(.Text)
            If .Characters(I, 1).Font.Underline = xlUnderlineStyleSingle Then '※5
                下線付き文字数 = 下線付き文字数 + 1
            End If
        Next
    End With
End Sub
'=================================================================================
<コメント>
※1 A1:A2 A3:A4 A5:A6 B1には範囲を記入
※2 SSSにはシート名を記入
※3 アクティブセルの文字列の4番目から3文字のフォント(4、3は適当に指定)
※4 この行の下の10行は必要なものだけ記入
※5 Underlineプロパティの定数は こちら


9-2) フォントの書式設定 (Mac専用) このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 文字の書式設定()
    With ActiveCell.Characters(Start:=4, Length:=3).Font '※1
        .OutlineFont = False                 'アウトラインフォント True:する  False:しない
        .Shadow = False                      '影付きフォント xlNone:下線なし
    End With
End Sub
'=================================================================================
<コメント>
※1 この行の下の2行は必要なものだけ記入


10) 色の指定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 色を指定する()
    Workbooks("BBB.xls").Worksheets("SSS").Activate 'BBBはブック名、SSSはシート名
    ActiveWindow.GridlineColor = RGB(0, 255, 0) '※2 アクティブウィンドウの枠線を緑色に
    Range("A1:A2").Font.Color = RGB(255, 0, 0)  '※1,2 フォントの色を赤にする
    Range("A3:A4").Font.ColorIndex = 5          '※1 フォントの色を青にする
    Range("A5:A6").Select                       '※1
        With Selection.Interior                 '塗りつぶし色
            .ColorIndex = 8                     '青緑
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
        End With
End Sub
'---------------------------------------------------------------------------------
Sub カラーパレットダイアログボックスを表示する()
    Application.Dialogs(xlDialogColorPalette).Show '[オプション]の[色]
End Sub
'---------------------------------------------------------------------------------
Sub 塗りつぶしの色コマンドバーを開く()
    Application.CommandBars("Fill Color").Visible = True
End Sub
'---------------------------------------------------------------------------------
Sub 塗りつぶしの色コマンドバーを指定位置に開く()
    上端距離 = 300                              '※3
    左端距離 = 150                              '※4
    With Application.CommandBars("Fill Color")
        .Visible = True
        .Top = 上端距離
        .Left = 左端距離
    End With
End Sub
'---------------------------------------------------------------------------------
Sub パターンダイアログボックスを表示する()
    Application.Dialogs(xlDialogPatterns).Show
End Sub
'---------------------------------------------------------------------------------
Sub パターンコマンドバーを開く()                '※5
    Application.CommandBars("Pattern").Visible = True
End Sub
'---------------------------------------------------------------------------------
Sub フォントの色コマンドバーを開く()            '※5
    Application.CommandBars("Font Color").Visible = True
End Sub
'=================================================================================
<コメント>
※1 A1:A2 A3:A4 A5:A6 B1には範囲を記入
※2 RGB関数の構文は RGB(red, green, blue)。 引数の値は下表参照
red green blue
255 255255
黄色255 2550
シアン0 255255
0 2550
マゼンタ255 0255
255 00
0 0255
0 00
※3 コマンドバーの上端から画面の上端までの距離 (ポイント単位)
※4     〃    左端   〃   左端   〃   (   〃    )
※5 表示位置を指定するコードは塗りつぶしの色コマンドバーと同じ
※6 各コマンドバーとダイアログのサンプルは こちら


11-1) 罫線の設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セル範囲に罫線を引く_外枠線()
    左上セル = "B2"
    右下セル = "D4"
    Range(左上セル, 右下セル).BorderAround Weight:=xlMedium '外枠:中太線
End Sub
'---------------------------------------------------------------------------------
Sub セル範囲に罫線を引く_格子線と外枠線()
    左上セル = "B7"
    右下セル = "D9"
    Range(左上セル, 右下セル).Borders.Weight = xlHairline   '格子:極細線
    Range(左上セル, 右下セル).BorderAround Weight:=xlMedium '外枠:中太線
End Sub
'=================================================================================
Sub 罫線の設定()
    左 = 1                                      '罫線設定範囲の左端
    上 = 1                                      '上端
    右 = 3                                      '右端
    下 = 3                                      '下端
    Sheets("SSS").Select                        '※1
        Range(Cells(上, 左), Cells(下, 右)).BorderAround _
            LineStyle:=xlContinuous                                     '外枠:連続線
        Range(Cells(上, 左), Cells(下, 右)).BorderAround _
            Weight:=xlThick                                             '外枠:太線
        Range(Cells(上, 左), Cells(上, 右)).Borders(xlEdgeBottom) _
            .LineStyle = xlContinuous                                   '下線:連続線
        Range(Cells(上, 左), Cells(上, 右)).Borders(xlEdgeBottom) _
            .Weight = xlMedium                                          '下線:中太線
        Range(Cells(下, 左), Cells(下, 右)).Borders(xlEdgeTop) _
            .LineStyle = xlContinuous                                   '上線:連続線
        Range(Cells(下, 左), Cells(下, 右)).Borders(xlEdgeTop) _
            .Weight = xlHairline                                        '上線:極細
        Range(Cells(上, 左 + 1), Cells(下, 左 + 1)).Borders(xlEdgeLeft) _
            .LineStyle = xlContinuous                                   '左側線:連続線
        Range(Cells(上, 左 + 1), Cells(下, 左 + 1)).Borders(xlEdgeLeft) _
            .Weight = xlMedium                                          '左側線:中太線
        Range(Cells(上, 左 + 1), Cells(下, 左 + 1)).Borders(xlEdgeRight) _
            .LineStyle = xlContinuous                                   '右側線:連続線
        Range(Cells(上, 左 + 1), Cells(下, 左 + 1)).Borders(xlEdgeRight) _
            .Weight = xlThin                                            '右側線:細線
End Sub
'---------------------------------------------------------------------------------
Sub 罫線を表形式に設定する()
    左上 = "B2"                                 '表の左上セル
    右下 = "D5"                                 ' 〃 右下 〃
    Worksheets("SSS").Activate                  '※1
    With Range(左上 & ":" & 右下)
        With .Borders(xlInsideHorizontal)       '内側水平線
            .LineStyle = xlContinuous
            .Weight = xlHairline
        End With
        With .Borders(xlInsideVertical)         '内側垂直線
            .LineStyle = xlContinuous
            .Weight = xlHairline
        End With
        With .Borders(xlDiagonalUp)             '斜線(右肩上り)
            .LineStyle = xlContinuous
            .Weight = xlHairline
        End With
        With .Borders(xlDiagonalDown)           '射線(右肩下り)
            .LineStyle = xlContinuous
            .Weight = xlHairline
        End With
        .BorderAround LineStyle:=xlContinuous, Weight:=xlThick  '外枠
    End With
End Sub
'---------------------------------------------------------------------------------
Sub アクティブシートの使われたセル範囲に縦横罫線を設定する()
    ActiveSheet.UsedRange.Borders.LineStyle = xlContinuous
End Sub
'---------------------------------------------------------------------------------
Sub 指定ワークシートの使われたセル範囲に縦横罫線を設定する()
    Worksheets("SSS").UsedRange.Borders.LineStyle = xlContinuous  '※1、3
End Sub
'=================================================================================
<コメント>
※1 SSSにはシート名を記入
※2 LineStyleプロパテイと Weidhtプロパティの定数は こちら
※3 アクティブでないワークシートでも指定可能


11-2) 罫線の消去 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 罫線の消去()
    左 = 1                                      '罫線消去範囲の左端
    上 = 1                                      '上端
    右 = 3                                      '右端
    下 = 5                                      '下端
    Sheets("SSS").Select                        '※1
        Range(Cells(上, 左), Cells(下, 右)).Select '消去する範囲を選択
        Selection.Borders(xlLeft).LineStyle = xlNone    '左側
        Selection.Borders(xlRight).LineStyle = xlNone   '右側
        Selection.Borders(xlTop).LineStyle = xlNone     '上側
        Selection.Borders(xlBottom).LineStyle = xlNone  '下側
        Selection.BorderAround LineStyle:=xlNone        '枠線
End Sub
'=================================================================================
<コメント>
※1SSSにはシート名を記入


12) セルのロック状況を取得する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルのロック状況を取得する()
    セル = "A1"                                     '※1
    If Range(セル).Locked Then                      '※2
        MsgBox "ロックに設定されています。"
    Else
        MsgBox "ロック設定されていません。"
    End If
End Sub
'=================================================================================
<コメント>
※1 A1には対象セルを記入
※2 [セルの書式・保護]の[ロック]がチェックされていれば
※3 シートが保護されている場合にロックが有効になる


13) セルの情報を調べる このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Public Function セルの情報_幅()
    Range("C3").Formula = "=CELL(""width"",C9)" 'CELL関数をセルにセット ※1、2、3、4
    セルの情報_幅 = Range("C3").Value           'セルの情報を取り出す ※2
End Function
'---------------------------------------------------------------------------------
Public Function セルの情報_パス()
    Range("C3").Formula = "=CELL(""filename"",B17)" '※1、2、3、4
    セルの情報_パス = Range("C3").Value             '※2
End Function
'=================================================================================
<コメント>
※1 Visual Basicから呼び出せないワークシート関数は、セルにセットして使います
※2 C3には関数をセットするセル名を記入
※3 C9、B17には対象範囲を記入
※4 "release" には検査の種類を記入、くわしくは こちら
サンプルブックのダウンロードは ここをクリック (YNxv205_cell.xls 114KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


14) 条件を満たすセルの操作 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Private Sub 条件を満たすセルを選択する_数式が含まれているセル()
    Worksheets("SSS").Activate                          '※1
    Cells.SpecialCells(xlCellTypeFormulas).Activate     '※2、3
End Sub
'---------------------------------------------------------------------------------
Private Sub 条件を満たすセルに着色する_数式が含まれているセル()
    Worksheets("SSS").Activate                          '※1
    Cells.SpecialCells(xlCellTypeFormulas).Interior.Color = RGB(255, 255, 0) '※2、3
End Sub
'---------------------------------------------------------------------------------
Private Sub 条件を満たすセルの文字に着色する_数式が含まれているセル()
    Worksheets("SSS").Activate                          '※1
    Cells.SpecialCells(xlCellTypeFormulas).Font.Color = RGB(255, 0, 0) '※2、3
End Sub
'=================================================================================
<コメント>
※1 "SSS"には、ワークシートの名前を記入する
※2 SpecialCellsメソッドの構文は SpecialCells(Type,Value) で引数 Value は省略可能
※3 SpecialCellsメソッドの引数の定数は こちら


15) セル移動方向を設定する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 入力後のセル移動方向を設定する()
    Application.MoveAfterReturn = True          '※1
    Application.MoveAfterReturnDirection = xlUp '※2 上
End Sub
'---------------------------------------------------------------------------------
Sub 入力後もアクティブセルが移動しないように設定する()
    Application.MoveAfterReturn = False         '※1
End Sub
'=================================================================================
Sub 入力後のセル移動方向の設定状況を取得する()
    MsgBox "入力後のアクティブセル移動 … " & Application.MoveAfterReturn
    MsgBox "入力後のセル移動方向 … " & Application.MoveAfterReturnDirection
End Sub
'=================================================================================
<コメント>
※1 True :入力後にアクティブセルが移動する
   False:入力後もアクティブセルは移動しない(MoveAfterReturnDirectionプロパティの値は無視
   される)
※2 MoveAfterReturnDirectionプロパティの定数
定数 移動方向 定数 移動方向
xlUp -4162 xlDown -4121
xlToRight -4159 xlToLeft -4161


16) 入力を制限する(保護されていないシート) このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub データ入力モードを制限ありに設定する()
    Application.DataEntryMode = xlOn            '※1、2
End Sub
'---------------------------------------------------------------------------------
Sub データ入力モードを制限ありに設定する_Escキーでの解除不可能()
    Application.DataEntryMode = xlStrict        '※1、3
End Sub
'---------------------------------------------------------------------------------
Sub データ入力モードを制限なしに設定する()
    Application.DataEntryMode = xlOff           '※4
End Sub
'---------------------------------------------------------------------------------
Sub データ入力モードの状態を取得する()
    状態 = Application.DataEntryMode
    If 状態 = xlOff Then
        説明 = "制限なし"
    ElseIf 状態 = xlOn Then
        説明 = "制限あり"
    ElseIf 状態 = xlStrict Then
        説明 = "制限あり(Escキーでの解除不可能)"
    End If
    MsgBox "データ入力モードの状態 … " & 状態 & " " & 説明
End Sub
'=================================================================================
<コメント>
※1 DataEntryModeプロパティは、保護されていないシートで、現在の選択範囲内のセルの
   ロック状態に合わせてデータ入力を制限できる
※2 ユーザーは[Esc]キーを押すか、ほかのシートを選択すれば解除できる
※3 ユーザーは[Esc]キーを押しても解除できないが、ほかのシートを選択すれば解除できる
※4 xlStrictで制限した場合もこれで解除できる
※5 DataEntryModeプロパティの定数と定数の値   xlOn … 1、xlStrict … 2、xlOff … -4146
※6 xlOnまたはxlStrictにしたままでは上書き保存できない等、多くの機能が制限される


17) 入力範囲を設定する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Private Sub 入力範囲を設定する()
    Worksheets("SSS").ScrollArea = "A2:D2"      'スクロール可能領域を設定する ※1、2
    Worksheets("SSS").EnableSelection = xlUnlockedCells '非ロックセルだけ選択可能 ※1、3
End Sub
'---------------------------------------------------------------------------------
Private Sub すべてのセルの選択を禁止する()
    Worksheets("SSS").EnableSelection = xlNoSelection '※1
End Sub
'---------------------------------------------------------------------------------
Private Sub 入力範囲の設定を解除する()
    Worksheets("SSS").ScrollArea = ""           'スクロール可能領域を設定しない ※1
    Worksheets("SSS").EnableSelection = xlNoRestrictions 'どのセルも選択可能にする ※1
End Sub
'=================================================================================
<コメント>
※1 SSSにはシート名を記入
※2 "A2:D2"には設定したいセル範囲を記入
※3 ワークシートを保護しているときにだけ使用できる


18) IMEの制御 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub IMEの状態を取得する()
    状態 = IMEStatus()
    MsgBox "IMEの現在の状態は " & 状態 & " です。", , "すぐマク"
End Sub
'---------------------------------------------------------------------------------
Sub IMEがオフならオンにする()
    If IMEStatus = vbIMEModeOff Then
      SendKeys "{kanji}", True                  '[半角/全角]キー
    End If
End Sub
'---------------------------------------------------------------------------------
Sub IMEがオンならオフにする()
    If IMEStatus = vbIMEModeOn Then
      SendKeys "{kanji}", True                  '[半角/全角]キー
    End If
End Sub
'---------------------------------------------------------------------------------
Sub IMEの初期入力モードをひらがなに設定する()
    If IMEStatus <> vbIMEModeHiragana Then
       SendKeys "{kana}", True
    End If
End Sub
'=================================================================================
Sub IMEの変換モードを人名地名に設定する()
    If IMEStatus <> vbIMEModeHiragana Then
       SendKeys "{kana}", True                  '入力モードをひらがなに設定する
    End If
    SendKeys "^{F10}C" & "G"                    '※3 変換モードを人名地名に設定する
End Sub
'=================================================================================
Sub 入力規則を設定してIMEをオンにする()
    ActiveCell.Validation.IMEMode = xlIMEModeHiragana
End Sub
'---------------------------------------------------------------------------------
Sub 入力規則を設定してIMEをオフにする()
    ActiveCell.Validation.IMEMode = xlIMEModeOff
End Sub
'---------------------------------------------------------------------------------
Sub 入力規則のIMEモードを取得する()
    On Error GoTo エラー処理
    入力規則のIMEモード = ActiveCell.Validation.IMEMode
    MsgBox 入力規則のIMEモード, , "すぐマク"
    Exit Sub
エラー処理:
    MsgBox "入力規則が設定されていません。", , "すぐマク"
End Sub
'=================================================================================
<コメント>
※1 IMEStatus関数の戻り値
定数 内容 定数 内容
vbIMEModeNoControl 0 制御しない (既定値) vbIMEModeKatakana 5 全角カタカナ入力モード
vbIMEModeOn 1 オンの状態 vbIMEModeKatakanaHalf 6 半角カタカナ入力モード
vbIMEModeOff 2 オフの状態 vbIMEModeAlphaFull 7 全角英数入力モード
vbIMEModeDisable 3 利用禁止状態 vbIMEModeAlpha 8 半角英数入力モード
vbIMEModeHiragana 4 全角ひらがな入力モード . .  
※2 IMEModeプロパティの定数
定数 内容 定数 内容
xlIMEModeAlpha 8 半角英数字 xlIMEModeAlphaFull 7 全角英数字
xlIMEModeDisable 3 無効 xlIMEModeHiragana 4 ひらがな
xlIMEModeKatakana 5 カタカナ xlIMEModeKatakanaHalf 6 半角カタカナ
xlIMEModeNoControl 0 コントロールなし xlIMEModeOff 2 オフ (英語モード)
xlIMEModeOn 1 オン      
※3 変換モードのキーコード
キーコード 内容 キーコード 内容
G 一般 S 話し言葉優先
N 人名/地名 O 無変換
※4 IME(Input Method Editor)とは、アジア言語のテキストを入力するためのプログラム



19) コメントの設定・変更・削除 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルにコメントが設定されているか調べる()
    If Range("A3").Comment Is Nothing Then      '※1
        MsgBox "コメントは設定されていません"
    Else
        MsgBox "コメントが設定されています"
    End If
End Sub
'---------------------------------------------------------------------------------
Sub セルにコメントが設定されているか調べる_TypeName関数利用()
    If TypeName(Range("A3").Comment) = "Comment" Then '※1
        MsgBox "コメントが設定されています"
    Else
        MsgBox "コメントは設定されていません"
    End If
End Sub
'---------------------------------------------------------------------------------
Sub セルにコメントを設定する()
    If Range("A3").Comment Is Nothing Then      '※1
        Range("A3").AddComment.Text "AddCommentのコメント"
    Else
        MsgBox "すでに設定されているのでできません"
    End If
End Sub
'---------------------------------------------------------------------------------
Sub セルのコメントを変更する()
    Range("A3").Comment.Text "変更後のコメント" '※1
End Sub
'=================================================================================
Sub セルのコメントのフォントを変更する()
    With ActiveCell.Comment.Shape.TextFrame.Characters.Font
        .Size = 14
        .Bold = True                            '※2
    End With
End Sub
'---------------------------------------------------------------------------------
Sub ワークシートのすべてのコメントのフォントを変更する()
    For Each 各コメント In ActiveSheet.Comments
       各コメント.Shape.TextFrame.Characters.Font.Size = 12
    Next
End Sub
'=================================================================================
Sub セルのコメントを強制的に表示にする()
    Range("A3").Comment.Visible = True          '※1
End Sub
'---------------------------------------------------------------------------------
Sub 表示中のセルのコメントを非表示にする()
    Range("A3").Comment.Visible = False         '※1、※3
End Sub
'---------------------------------------------------------------------------------
Sub 表示中のセルのコメントを非表示にする_2()
    ActiveSheet.Comments(1).Visible = False     '※1、※3
End Sub
'---------------------------------------------------------------------------------
Sub ワークシートのすべてのコメントを非表示にする()
    For Each 各コメント In ActiveSheet.Comments
        各コメント.Visible = False              '※1、※3
    Next
End Sub
'=================================================================================
Sub セルのコメントを削除する()
    Range("A3").ClearComments                   '※1
End Sub
'=================================================================================
Sub セル範囲内の左上隅のセルにコメントを設定する()
    Range("A3:C4").NoteText "NoteTextのコメント" '※1
End Sub
'---------------------------------------------------------------------------------
Sub セル範囲内のすべてのセルからコメントを削除する()
    Range("A3:C4").ClearNotes                   '※1
End Sub
'=================================================================================
<コメント>
※1 A3またはA3:C4には対象セルまたはセル範囲を記入
※2 False : 太字にしない、True : 太字にする
※3 False : 非表示、True : 表示



20) 参照元・参照先をトレースする このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 参照元をトレースする()
    Range("C3").ShowPrecedents                  '※2
End Sub
'---------------------------------------------------------------------------------
Sub 参照先をトレースする()
    Range("A1").ShowDependents                  '※3
End Sub
'---------------------------------------------------------------------------------
Sub トレース矢印を削除する()
    Range("C3").ShowPrecedents Remove:=True     '参照元トレース矢印を削除
    Range("A1").ShowDependents Remove:=True     '参照先トレース矢印を削除
    ActiveSheet.ClearArrows                     'すてのトレース矢印を削除
End Sub
'---------------------------------------------------------------------------------
Sub ワークシート分析ツールバーを表示する()
    Application.CommandBars("Formula Auditing").Visible = True '※4
End Sub
'=================================================================================
<コメント>
※1 参照元をトレース         参照先をトレース
 
※2 "C3" には数式セルを指定する
※3 "A1" には数式から参照されている(調べたい)セルを指定する
※4 True:表示、False:非表示 (Excel2002に限る)
   

Excel VBA Macro