ここでタイトルのCellは純粋にCellという意味ではなくWorksheetに対してその中身という意味でCellとタイトルをつけています。ここではCellだけではなくRange、Row、Columnなどについても説明しています。CellsもRows、ColumnsもRangeのメンバーでほとんどのメソッドとプロパティーが共通です。

1.メソッド

主なメソッド

メソッド引数定数内容
Activateアクティブにする
AutoFit自動幅又は高さの調整
Clear全てクリア
ClearCommentsコメント文をクリア
ClearContents数式、文字列をクリア
ClearFormats書式をクリア
ClearHyperlinksハイパーリンクをクリア
ClearNotesノートをクリア
ClearOutlineアウトラインをクリア
CopyDestinationコピー。コピー先をRengeオブジェクトで指定
CutDestination切り取り。貼り付け先をRengeオブジェクトで指定
Endデータの最終行・列の検索
Findデータの検索
FindNext次のデータを検索
Group範囲をグループ化する
Insert挿入する行・列数により右または下方向にシフト
ShiftxlShiftToRight挿入後右方向にシフト
ShiftxlShiftTDown挿入後下方向にシフト
Paste貼り付け
Select選択
Ungroup範囲のグループ化を解除する

2.プロパティー

主なプロパティー

プロパティーサブプロパティー内容
Applicationアプリケーション
BordersLineStylexlDiagonalDownなど枠線
ColumnWidth列幅。1単位は標準スタイルの一文字分です。注1
CurrentRegionRowsなどアクティブ セル領域 (空白行と空白列で囲まれたセル範囲) を返します。
EntireColumn全列
EntireRow全行
Left左の位置
FontBoldなどTrueフォント
Formula
FormulaR1C1R1C1形式の式
Height高さ。読取り専用。1単位は1ポイントです。注2
HiddenTrue/False行または列を非表示(True)、表示(False)します。
HorizontalAlignmentxlCenterなど水平方向の位置合わせ方法
InteriorColorIndex背景色(塗りつぶし)(0から56の値)を設定します。
ColorRGB(r,g,b)で背景色を設定します。但し表示色には制限があります。
Name名前
OffsetRangeオフセット
Orientation文字の表示方向。例:90
RowHeight行の高さ。1単位は1ポイントです。注2
Textテキストの値
Top上部の位置
Value
VerticalAlignmentxlBottomなど高さ方向の位置合わせ方法
Width幅。読取り専用。1単位は1ポイントです。注2

注1:標準スタイルは、ツールバーの[書式]-[スタイル]で表示されるダイアログボックスで、ブック単位で設定できます。[ツール]-[オプション]の[全般]パネルからはExcelのシステム単位でも設定できますが、この場合、変更を反映させるにはExcelの再起動が必要です。
注2:1ポイントは1/72インチ(1inch = 25.4mm)で約0.35ミリメートルです。
マシンやプリンターなどの環境によって変わりますが、96DPI(Windows標準)の場合、
96ピクセル=72ポイント
の関係なので、1ポイント=96÷72ピクセル=1.333..ピクセルです。

3.Column、Rowの指定方法

ColumnやRowを指定する場合、文字列で指定することもできますが、マクロを使用する場合数値で指定した方が便利です。特に列は文字の場合A,B,C...とアルファベットで指定するので、数値で扱うと便利です。

  1. ) 複数Columnの指定方法
    以下のようにRangeをかませて使用します。
        Dim sht As Worksheet
    
        Set sht = ActiveSheet
        sht.Range(sht.Columns(1), sht.Columns(10)).?????
    
    注:?????の部分にはRangeのメソッドなどを記述します。(例:Interior.ColorIndex = 3)
  2. ) 一列Columnの指定方法
    Columnsで直接指定します。
        Dim sht As Worksheet
    
        Set sht = ActiveSheet
        sht.Columns(15).?????
    
  3. ) Rowの場合
    上記のColumnsの部分がRowsになります。

4.Rangeの指定方法

複数の範囲を指定する場合は、以下のようにUnionを使用します。パラメータにRangeをコンマで複数列挙します。

    Dim sht As Worksheet

    Set sht = ActiveSheet
    Union(sht.Range("A1:C5), sht.Range("A10:C12") ,sht.Range("E3:G7")).?????

Rangeを行と列の値で設定する場合は以下のようにCellsで範囲を設定します。

    Dim sht As Worksheet

    Set sht = ActiveSheet

    sht.Range(sht.Cells(1, 1), sht.Cells(10, 10)).?????

一つのCellをRangeとして指定する場合、説明は不要と思いますが、以下のようになります。

    Dim sht As Worksheet

    Set sht = ActiveSheet
    sht.Cells(11, 11).?????

5.最終行・列をもとめる(End)

Sub example401(sht As Worksheet, rw As Long, cl As Integer)
    Dim workRange As Range

    Set workRange = sht.Cells(65536, cl)
    MsgBox workRange.End(xlUp).Row
    Set workRange = Nothing

    Set workRange = sht.Cells(rw, 256)
    MsgBox workRange.End(xlToLeft).Column
    Set workRange = Nothing

End Sub

6.データ数(Rowの行数)を求める

CurrentRegionは現在のセルから空白に囲まれたデータのある範囲を返します。空白がある場合は範囲はそこまでです。そのため以下の例のCells(4,5)はデータがある範囲内である必要があります。

    Count = MsgBox Cells(4, 5).CurrentRegion.Rows.Count

7.内容のリセット

ワークシート内のデータを空白にしたり、背景色を無しにリセットするなどよく使用する処理のサンプルです。他のクリアーについては上記のメソッドの中でClearで始まるメソッドを使用します。
ここで単にClear_Range.Clearとして全てをクリアーすることもできますが、意図しないものも(書式など)クリアーします。アプリケーションの内容に応じて、必要なものを使用してリセットしてください。

Public Sub Example()
    Dim sht          As Worksheet
    Dim Clear_Range  As Range

    Set sht = ActiveSheet
    Set Clear_Range = sht.Cells      '←シート全体をクリアーする場合
    '↓Rangeでクリアーする範囲を指定する場合
    Set Clear_Range = sht.Range(sht.Cells(1, 1), sht.Cells(10, 10))
    Clear_Range.ClearContents         '←データのクリアー
    Clear_Range.Interior.ColorIndex = xlNone      '←背景色のリセット
    '↓罫線のクリアー。使用した種類の罫線をクリアーしてください。
    Clear_Range.Borders(xlDiagonalDown).LineStyle = xlNone
    Clear_Range.Borders(xlDiagonalUp).LineStyle = xlNone
    Clear_Range.Borders(xlEdgeLeft).LineStyle = xlNone
    Clear_Range.Borders(xlEdgeTop).LineStyle = xlNone
    Clear_Range.Borders(xlEdgeBottom).LineStyle = xlNone
    Clear_Range.Borders(xlEdgeRight).LineStyle = xlNone
    Clear_Range.Borders(xlInsideVertical).LineStyle = xlNone
    Clear_Range.Borders(xlInsideHorizontal).LineStyle = xlNone

    Set Clear_Range = Nothing
End Sub

8.Group化(行・列)

  1. ) 行のグループ化と解除
    Public Sub row_Group(sht As Worksheet, startRow As Long, endRow As Long)
        
        sht.Rows(startRow & ":" & endRow).Rows.Group
    
    End Sub
    
    Public Sub row_Ungroup(sht As Worksheet, startRow As Long, endRow As Long)
        
        sht.Rows(startRow & ":" & endRow).Rows.Ungroup
    
    End Sub
    
  2. ) 列のグループ化と解除
    Public Sub column_Group(sht As Worksheet, startCol As Integer, endCol As Integer)
    
        sht.Range(sht.Columns(startCol), sht.Columns(endCol)).Columns.Group
        
    End Sub
    
    Public Sub column_Ungroup(sht As Worksheet, startCol As Integer, endCol As Integer)
    
        sht.Range(sht.Columns(startCol), sht.Columns(endCol)).Columns.Ungroup
        
    End Sub
    
  3. ) グループの表示
    Outline オブジェクトの ShowLevels メソッドでクループ化された行と列の各レベルを表示します。1番目のパラメータが行で2番目のパラメータが列です。指定しない場合は、ブランク(省略)または0を指定します。レベルの最大値は8のようで、8以上の値を指定するとエラーとなります。しかし、レベルが3までしかなくてもレベル8を指定してもエラーになりません。従って全てを閉じる場合は1を、全てを開く場合は8を指定すればいいことになります。
        Dim sht As Worksheet
            :
        sht.Outline.ShowLevels RowLevel, ColumnLevel
        sht.Outline.ShowLevels RowLevel                 '←行のみを指定する場合
        sht.Outline.ShowLevels , ColumnLevel            '←列のみを指定する場合
    

9.AutoFit

開始列と終了列間の列幅を自動調整します。

Sub Column_AutoFit(sht As Worksheet, startCol As Integer, endCol As Integer)

    sht.Range(sht.Columns(startCol), sht.Columns(endCol)).Columns.EntireColumn.AutoFit

End Sub

10.入力値の自動大文字変換

次の関数は入力値を大文字に変換すると同時に変換後の値を戻します。変換後の値を戻り値として使用しない場合は、最後の処理は不要です。

Function To_Upper(cel As Range) As String
    cel.Value = UCase(cel.Value)
    To_Upper = cel.Value    
End Function

最終更新のRSS
Last-modified: 2014-03-11 (火) 01:58:42 (3698d)