■ Range オブジェクト ■ ■ Range でのセルの指定方法 範囲 書式 解説 単一のセルを指定 Range("A1") 複数のセル(セル範囲)を指定 Range("A1:C5") Range("A1","C5") A1 セルから C5 セルの四角いセル範囲(15 個のセル) 複数のセル(飛び飛び)を指定 Range("A1,C5") A1 セルと C5 セル(2 個のセル) 列全体を指定 Range("A:A") A 列全体 Range("A:C") Range("A:A","C:C") A 列から C 列迄の 3 列 行全体を指定 Range("1:1") 1 行目全体の指定 Range("1:5") Range("1:1","5:5") 1 行から 5 行迄の 5 行 名前定義されて居るセルを指定 Range("名前定義の名前") Range の指定方法のパターン パターン 解説 Range(“A1″) A1 セル Range(“A1:B3″) A1~B3 セル範囲 Range(“A1,B3″) A1 と B3 セル Range(“A1″, “B3″) A1~B3 セル範囲 Range(Cells(1, 1)) A1 セル
Range(Cells(1, 1), Cells(3,2)) A1~B3 セル範囲 Range(“A1″, Cells(3,2)) A1~B3 セル範囲 Range(“A1:A3″, “B1″) A1~B3 セル範囲 Range(“名前定義”) 名前定義のセル範囲 Range(Rows(1), Rows(3)) 1~3 行の範囲 Range(Columns(1), Columns(3)) 1~3 列の範囲 Range(“1:3″) 1~3 行の範囲 Range(“A:C”) 1~3 列の範囲 Range(Rows(1), Columns(1)) 全セル Cells の指定方法のパターン パターン 解説 Cells 全セル Cells(1, 1) A1 セル Cells(1, “A”) A1 セル
M
Mi
ic
cr
ro
os
so
of
ft
t
E
Ex
xc
ce
el
l
詳細
詳
細
■ Range メソッド メソッド 解説 Activate 単一のセルをアクティブにする。セルは現在の選択範囲内に有る必要が有る。 AddComment 範囲にコメントを追加する。 AdvancedFilter 検索条件の範囲に基づいて、リストにフィルタを懸ける。 ApplyNames 指定したセル範囲のセルに名前を付ける。 ApplyOutlineStyles 指定したセル範囲にアウトラインの既定のスタイルを適用する。 AutoComplete オートコンプリートのリストから、一致する文字列を取得する。 AutoFill 指定したセル範囲のセルに対してオートフィルを実行する。 AutoFilter オートフィルタを使用してリストにフィルタを懸ける。 AutoFit 対象セル範囲の列の幅や行の高さを内容に合わせて調節する。 AutoFormat 定義済みの書式を使って、指定されたセル範囲の書式を自動的に設定する。 AutoOutline 指定したセル範囲のアウトラインを自動的に作成する。 BorderAround セル範囲に罫線を追加し、追加した罫線のColor、LineStyle、Weight の各プロパティ を設定する。 Calculate ワークシートの指定したセル範囲の計算を実行する。 CheckSpelling オブジェクトのスペルをチェックする。 Clear オブジェクト全体をクリアする。 ClearComments 指定されたセル範囲から総てのコメントを消去する。 ClearContents セル範囲から数式と文字をクリアする。 ClearFormats オブジェクトの書式設定をクリアする。 ClearNotes 指定されたセル範囲内の総てのセルからコメントを削除する。 ClearOutline 指定した範囲のアウトラインを消去する。 ColumnDifferences セル範囲内の各列のセルと指定したセルとを比較し、内容の異なる総てのセルを表す Range オブジェクトを取得する。 Consolidate 複数のワークシートに有る複数のセル範囲を、1 枚のワークシートの 1 つのセル範囲 に統合する。 Copy セル範囲を、指定したセル範囲又はクリップボードにコピーする。
CopyFromRecordset ADO 又は DAO の Recordset オブジェクトの内容をワークシートにコピーする(デー タは指定したセル範囲の左上隅を起点として貼り付けられる)。 CopyPicture オブジェクトをクリップボードへピクチャ(画像)としてコピーする。 CreateNames シートに有るラベルの文字列に基づいて、指定したセル範囲の名前を作成する。 CreatePublisher 指定されたキーワードはMacintosh で而巳使用される。 Cut 指定されたオブジェクトを切り取り、クリップボードに保存するか、指定したセル範 囲に貼り付ける。 DataSeries 指定されたセル範囲にデータ系列を作成する。 Delete オブジェクトを削除する。 DialogBox MicrosoftExcel4.0 のマクロシートのダイアログボックス定義テーブルで定義されて いるダイアログボックスを表示する。 Dirty 次回の再計算が発生した時に再計算する範囲を指定する。 EditionOptions 指定されたキーワードはMacintosh で而巳使用される。 FillDown 指定したセル範囲の先頭行のセルを下側に有るセルにコピーする。 FillLeft 指定したセル範囲の右端のセルを左側に有るセルにコピーする。 FillRight 指定したセル範囲の左端のセルを右側に有るセルにコピーする。 FillUp 指定したセル範囲の下端のセルを上側に有るセルにコピーする。
Find 指定されたセル範囲の中で特定の情報を検索し、情報が見付かった最初のセルを表す Range オブジェクトを取得する。 FindNext Find メソッドに依って開始された検索を続行する。 FindPrevious Find メソッドに依って開始された検索を続行する。 FunctionWizard 選択されたセル範囲の左上隅のセルで関数ウィザードを起動する。 GetEnumerator コレクション全体での繰り返しをサポートする為に、列挙型の値を取得する。 GoalSeek 指定した目標を達成するのに必要な値を計算する。 Group Range オブジェクトがピボットテーブルフィールドのデータ範囲に有る単一のセルを 表す場合、Group メソッドは此のフィールドで数値又はデータのグループ化を実行す る。 Insert ワークシート又はマクロシートの指定した範囲に、空白のセル又はセル範囲を挿入す る。指定した範囲に有ったセルはシフトされる。 InsertIndent 指定した範囲のインデントを変更する。 Justify 対象セル範囲内の文字列を、其のセル範囲に合わせて割り付ける。 ListNames 定義されて居る名前の内、表示されて居る総ての名前の一覧を、ワークシートに貼り 付ける。対象セル範囲の先頭のセル以降に貼り付ける。 Merge 指定したRange オブジェクトに有るセルを結合する。 NavigateArrow 指定したセル範囲のトレース矢印を辿って、参照元のセル、参照先のセル、又はエラ ーの発生したセル(セル範囲)へ移動する。 NoteText セル範囲の左上隅のセルに関連付けられて居るコメントを設定する。 Parse セル範囲内のデータを分割して、複数のセルに入力する。 PasteSpecial クリップボードに有るRange オブジェクトを、指定したセル範囲に貼り付ける。 PrintOut オブジェクトを印刷する。 PrintPreview オブジェクトの印刷プレビュー(印刷時のイメージ)を表示する。 RemoveSubtotal リストから小計を削除する。 Replace 指定したセル範囲に有る文字を示すブール型(Boolean)の値を取得する。 RowDifferences 各行に於いて、比較対象のセルと内容が異なる総てのセルを表すRange オブジェクト を取得する。 Run 指定したセル範囲に有るMicrosoftExcel のマクロを実行する。 Select オブジェクトを選択する。 SetPhonetic 指定した範囲の総てのセルにPhonetic オブジェクトを作成する。 Show 指定した範囲が表示されるようにアクティブウィンドウの内容をスクロールする。 ShowDependents アクティブセル(参照元)から、其の値を直接参照して居るセル(参照先)に向けて トレース矢印を引く。 ShowErrors アクティブセルが直接的又は間接的に参照するセル(参照元)で、エラーの原因と成 る参照元セルから参照先セルに対してトレース矢印を引く。エラーの原因と成る1 つ 又は複数の参照元セルで構成される範囲を取得する。 ShowPrecedents 対象セルが直接参照して居るセル(参照元)から、対象セルに向けて矢印を引く。 Sort ピボットテーブルレポート又は範囲を並べ替える。指定した範囲にセルが1 つしかな い場合は、アクティブな領域を並べ替える。 SortSpecial 東アジアの並べ替え方式を使用して、範囲又はピボットテーブルレポートの並べ替え を行う。範囲内のセルが1 つだけの場合は、此のメソッドをアクティブな領域に対し て使用する。例えば、日本語は五十音順で並べ替える。 Speak 範囲内のセルを、行又は列の順番で読み上げる。 SpecialCells 指定した種類と値に一致する総てのセルを表すRange オブジェクトを取得する。 SubscribeTo 指定されたキーワードはMacintosh で而巳使用される。
Subtotal セル範囲の集計を作成する。指定されたセル範囲が単一セルの時は、現在の選択範囲 を集計する。 Table ワークシートで定義した入力値と数式に基づいて、データテーブルを作成する。 TextToColumns セルに入力されて居るデータ(1 つのセル内で、コンマ、スペース、タブ等で区切られ たデータ)を、複数の列に区切る。対象と成る列は1 列だけで有る。 Ungroup セル範囲のアウトラインレベルを上げる(行、列のアウトラインレベルの番号は減る)。 UnMerge 結合された領域を夫々のセルに分割する。 ■ Range プロパティ プロパティ 解説 AddIndent セル内の文字列の配置が縦又は横に均等に設定される場合に、文字列を自動的にイン デントするか何うかを調べる。 Address セル範囲への参照を取得する。 AddressLocal 指定したセル範囲への参照をユーザーの言語で取得する。 AllowEdit 保護されたワークシートに有るセル範囲が編集可能か何うかを調べる。
Application MicrosoftExcel アプリケーションを表す Application オブジェクトを取得する。 Areas 複数の選択範囲に有る総てのセル範囲を表すAreas コレクションを取得する。 Borders スタイル又はセル範囲(条件付き書式の一部として定義された範囲を含む)の罫線を 表すBorders コレクションを取得する。 Cells 指定した範囲のセルを表すRange オブジェクトを取得する。 Characters オブジェクトの文字列内の文字の範囲を表すCharacters オブジェクトを取得する。 Column 指定されたセル範囲の最初の領域で、最初の列番号を数値で取得する。 Columns 指定したセル範囲の列を表すRange オブジェクトを取得する。 ColumnWidth 指定したセル範囲内の総ての列の幅を設定する。 Comment セル範囲の左上隅のセルに関連付けられて居るコメントを表すCommentオブジェク トを取得する。 Count コレクション内のオブジェクトの数を取得する。 Creator 指定したオブジェクトの作成元のアプリケーションを示す32 ビットの整数値を取得 する。 CurrentArray 指定したセルが配列の一部で有る場合、配列全体を表すRange オブジェクトを取得 する。 CurrentRegion 現在の選択範囲を表すRange オブジェクトを取得する。 Dependents 対象と成るセルを直接、又は間接に参照して居る参照先のセル範囲を表すRange オ ブジェクトを取得する。 DirectDependents セルを直接参照して居る総てのセル範囲を表すRange オブジェクトを取得する。 DirectPrecedents セルが直接参照して居る参照元の総てのセル範囲を表すRange オブジェクトを取得 する。 End セルが含まれる領域の終端のセルを表すRange オブジェクトを取得する。 EntireColumn 指定したセル範囲に含まれる1 列又は複数の列全体を表す Range オブジェクトを取 得する。 EntireRow 指定したセル範囲に含まれる1 行又は複数の行全体を表す Range オブジェクトを取 得する。 Errors エラーチェックの各オプションの状態を取得する事が出来る。 Font 指定したオブジェクトのフォントを表すFont オブジェクトを取得する。 FormatConditions 指定したセル範囲の総ての条件付書式を表すFormatConditions コレクションを取得
する。 Formula オブジェクトの数式を、A1 形式の表記形式で、コード記述時の言語で設定する。 FormulaArray セル範囲の配列数列を設定する。 FormulaHidden ワークシートが保護されて居る場合に、数式を非表示にするか何うかを調べる。 FormulaLabel 指定されたセル範囲の数式ラベルの種類を設定する。 FormulaLocal 指定したオブジェクトの数式をA1 形式で、ユーザーの言語で設定する。 FormulaR1C1 指定したオブジェクトの数式をR1C1 形式で、コード記述時の言語で設定する。 FormulaR1C1Local 指定したオブジェクトの数式をR1C1 形式で、ユーザーの言語で設定する。 HasArray 指定したセルが配列数式の一部で有るか何うかを調べる。 HasFormula セル範囲内の総てのセルに数式が入力されて居るか何うかを調べる。 Height セル範囲の高さで有る。 Hidden 行又は列が非表示で有るか何うかを調べる。 HorizontalAlignment 指定したオブジェクトの水平方向の配置を設定する。 Hyperlinks セル範囲のハイパーリンクを表すHyperlinks コレクションを取得する。 ID ページをWeb ページとして保存する場合に、指定されたセルの識別用ラベルを設定 する。 IndentLevel セル又はセル範囲のインデントのレベルを設定する。 Interior 指定したオブジェクトの内部を表すInterior オブジェクトを取得する。 Item 指定したセル範囲からの相対位置に有るセル範囲を表すRange オブジェクトを取得 する。 Left 列A の左端からセル範囲の左端迄の距離で有る。 ListHeaderRows 指定したセル範囲の中の見出し行の数を取得する。
ListObject Range オブジェクト又は QueryTable オブジェクトに対して ListObject オブジェク トを取得する。 LocationInTable 指定したセル範囲の左上隅のセルがPivotTable レポートのどの部分に当たるかを表 す定数を取得する。 Locked オブジェクトがロックされて居るか何うかを調べる。 MergeArea 指定したセルを含んで居る結合されたセル範囲を表すRange オブジェクトを取得す る。 MergeCells セル範囲又はスタイルに結合されたセルが含まれて居るか何うかを調べる。 Name オブジェクトの名前を設定する。 Next 次のセルを表すRange オブジェクトを取得する。 NumberFormat オブジェクトに含まれる文字列や数値の表示形式を示す文字列を設定する。 NumberFormatLocal オブジェクトの表示形式の文字列を使用言語の文字列に設定する。 Offset 指定したセル範囲からオフセットする範囲を表すRange オブジェクトを取得する。 Orientation 文字列の向きを取得する。 OutlineLevel 指定した行又は列の現在のアウトラインレベルを設定する。 PageBreak 改ページの位置を設定する。 Parent 指定したオブジェクトの親オブジェクトを取得する。 Phonetic セル内の特定の振り仮名テキストの文字列に付いての情報を含むPhonetic オブジェ クトを取得する。 Phonetics 指定したセル範囲に有るPhonetics コレクションを取得する。 PivotCell ピボットテーブル内のセルを表すPivotCell オブジェクトを取得する。 PivotField 指定した範囲の左上隅を含むピボットテーブルフィールドを表すPivotField オブジ ェクトを取得する。 PivotItem 指定した範囲の左上隅を含むピボットテーブル項目を表すPivotItemオブジェクトを
取得する。 PivotTable 指定した範囲の左上隅を含むピボットテーブルレポート又はピボットグラフレポー トに関連するピボットテーブルレポートを表すPivotTable オブジェクトを取得する。 Precedents セルが直接又は間接に参照して居る参照元を表すRange オブジェクトを取得する。 PrefixCharacter セルの接頭辞を取得する。 Previous 前のセルを表すRange オブジェクトを取得する。
QueryTable 指定したRange オブジェクトを含むクエリテーブルを表す QueryTable オブジェク トを取得する。 Range 単一のセル又はセル範囲を表すRange オブジェクトを取得する。 ReadingOrder 指定したオブジェクトの読み取り順序を設定する。 Resize 指定したセル範囲のサイズを変更する。 Row 指定したセル範囲の最初の領域の先頭行の番号を取得する。 RowHeight 指定したセル範囲内の総ての行の高さをポイント単位で取得する。 Rows 指定したセル範囲の行を表すRange オブジェクトを取得する。 ShowDetail True を設定すると、指定したセル範囲のアウトラインを展開(詳細行又は詳細列を 表示)する。 ShrinkToFit 使用可能な列幅に収まるように文字列が自動的に縮小されるか何うかを調べる。 SmartTags 指定したセルの識別子を表すSmartTags オブジェクトを取得する。 SoundNote 此のプロパティは、使用しては成らない(サウンドメモはMicrosoftExcel から削除さ れた)。 Style 指定した範囲のスタイルを表すStyle オブジェクトを取得する。 Summary セル範囲がアウトラインの集約行又は集約列で有るか何うかを調べる。 Text 指定したオブジェクトの文字列を設定する。 Top 行1 の上端からセル範囲の上端迄の距離をポイント単位で取得する。 UseStandardHeight Range オブジェクトの行の高さがシートの標準の高さに等しいか何うかを調べる。 UseStandardWidth Range オブジェクトの列の幅が、シートの標準の幅に等しいか何うかを調べる。 Validation 指定したセル範囲の入力規則を表すValidation オブジェクトを表する。 Value 指定したセル範囲の値を設定する。 Value2 セルの値を設定する。 VerticalAlignment 指定したオブジェクトの垂直方向の配置を設定する。 Width ポイント単位のセル範囲の幅です。 Worksheet 指定したセル範囲を含むワークシートを表すWorksheet オブジェクトを取得する。 WrapText オブジェクトの文字列が折り返されるか何うかを調べる。
XPath 指定したRange オブジェクトにマッピングされて居る要素の XPath を表す XPath オブジェクトを取得する。
■ 主要メソッド Sort メソッド
値の範囲を並べ替える。 構文は、下記の通りで有る。
Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)
引数は、下記の通りで有る。
名前 データ型 説明
Key1 バリアント型 最初の並べ替えフィールドを範囲名(文字列)又はRange オブジェク トで指定し、並べ替える値を特定する。
Order1 XlSortOrder Key1 で指定した値の並び替え順序を指定する。
Key2 バリアント型 2 番目の並べ替えフィールド(ピボットテーブルを並べ替える場合には 使用出来ない)。
Type バリアント型 並べ替える要素を指定する。
Order2 XlSortOrder Key2 で指定した値の並び替え順序を指定する。
Key3 バリアント型 3 番目の並べ替えフィールド(ピボットテーブルを並べ替える場合には 使用出来ない)。
Order3 XlSortOrder Key3 で指定した値の並び替え順序を指定する。
Header XlYesNoGuess 最初の行にヘッダー情報が含まれるか何うかを指定する(xlNo が既定 値。Excel にヘッダーを決定させるには、xlGuess を指定)。
OrderCustom バリアント型 ユーザー設定の並べ替え順のリスト内の番号を示す1 から始まる整数 を指定する。
MatchCase バリアント型 True の場合、大文字と小文字を区別して並べ替えを行い、False の場 合、大文字と小文字を区別しないで並べ替えを行う(ピボットテーブル の並べ替えには使用出来ない)。
Orientation XlSortOrientation 並べ替えを昇順で行うか、降順で行うかを指定する。 SortMethod XlSortMethod 並べ替えの方法を指定する。
DataOption1 XlSortDataOption Key1 で指定した範囲でテキストを並べ替える方法を指定する(ピボッ トテーブルの並べ替えには適用されない)。
DataOption2 XlSortDataOption Key2 で指定した範囲でテキストを並べ替える方法を指定する(ピボッ トテーブルの並べ替えには適用されない)。
DataOption3 XlSortDataOption Key3 で指定した範囲でテキストを並べ替える方法を指定する(ピボッ トテーブルの並べ替えには適用されない)。
※ 孰れの引数も、名前付き引数で、省略可能で有る。
XlSortOrder 指定したフィールドや範囲の並べ替え順序を指定する。 xlAscending 1 指定したフィールドを昇順で並べ替える(既定値)。
XlSortOrientation 並べ替え方向を指定する。 xlSortColumns 1 列単位で並べ替える。 xlSortRows 2 行単位で並べ替える(既定値)。 XlSortMethod 並べ替えの種類を指定する。 xlPinYin 1 中国語の発音表記の順で並べ替える(既定値)。 xlStroke 2 各文字の総画数で並べ替える。 XlSortDataOption テキストを並べ替える方法を指定する。 xlSortNormal 0 数値データとテキストデータを別々に並べ替える(既定値)。 xlSortTextAsNumbers 1 テキストを数値データとして並べ替える。 XlSortOn データを並べ替える基準と成るパラメーターを指定する。 SortOnCellColor 1 セルの色 SortOnFontColor 2 フォントの色 SortOnIcon 3 アイコン SortOnValues 0 値 XlYesNoGuess 先頭の行に見出しを含めるかどうかを指定する。 xlGuess 0 見出しが有るか何うかをExcel が推量して特定する。 xlNo 2 範囲全体が並べ替えの対象に成る(既定値)。 xlYes 1 範囲全体が並べ替えられない。 下記の例では、ColorIndex プロパティを使用して、列 A 内のセルの色の値を取得し、其の値を使用して色に依 る範囲の並べ替えを行う。 Sub ColorSort()
'Set up your variables and turn off screen updating. Dim iCounter As Integer
Application.ScreenUpdating = False
'For each cell in column A, go through and place the color index value of the cell in column C. For iCounter = 2 To 55
Cells(iCounter, 3) = _
Cells(iCounter, 1).Interior.ColorIndex Next iCounter
'Sort the rows based on the data in column C Range("C1") = "Index"
Columns("A:C").Sort key1:=Range("C2"), _ order1:=xlAscending, header:=xlYes
'Clear out the temporary sorting value in column C, and turn screen updating back on. Columns(3).ClearContents
Application.ScreenUpdating = True End Sub
■ セル範囲 ⇔ 配列
セル範囲を配列に入れたり、配列をセル範囲に纏めて入れる事が出来る。此れは、高速処理したい時の必須テク ニックに成る。
下記の様なMicrosoft Office の Excel で VBA で試して観る。
コマンドボタン(cmdCopy)をクリックした時のイベントプロシージャのコードは、下記の通りで有る。 Option Explicit
Private Sub cmdCopy_Click() Dim A ' セル範囲を配列に格納 A = Sheets(1).Range("A1:G5") ' 確認用 Stop ' 配列をセル範囲に複写 Sheets(2).Range("A1:G5") = A End Sub
実行結果は下記の通りで有る。
因みに、実行を継続すれば、Sheet2 に正しくコピーされる。亦、コピー先のセル範囲を Range("B2:H6") 等に 変更しても問題無く作動する。
上記では、セル範囲を格納する配列は、宣言では配列として宣言して居らず、更に、データ型も指定して居ない が、上図で解る様に、セル範囲に併せて、A(1 To 5, 1 To 7) の Variant 型の配列が自動的に生成されて、其処に 値が格納されて居る(VBA は Visual Basic 6.0 を基にして居り、宣言でデータ型を省略した場合は、Variant 型 と成る)。 セル範囲に、数値や文字列丈でなく、画像等のバイナリデータを含む場合はVariant 型の使用も止むを得ないか も知れないが、文字列として取り込む事が出来るデータで有る場合、極力Variant 型は使用したくないので、セ ル範囲の値を文字列として取り込む為に、下記の様に変数A を String 型で宣言して観る。 Dim A As String 此の場合、実行時エラー13(型が一致しません)が発生する。 次に、要素数を自動で決定して貰う為に動的配列として宣言して観る。 Dim A( ) As String
此の場合も、実行時エラー13(型が一致しません)が発生する。此れは、当該配列の使用前に ReDim ステート メントで要素数を指定しても、同様に実行時エラー13 が発生する。
次に、実用範囲は狭まるが、要素数を最初から指定した静的配列として宣言して観る。 Dim A(5, 7) As String
此の場合は、コンパイルエラー(配列には割り当てられません)と成る。此れは、宣言でデータ型を外しても(即 ち、Variant 型にしても)、同様のコンパイルエラーが発生する。
亦、Variant 型は、Visual Basic.NET 以降では廃止されて居るので、variant 型の代わりに Object 型を使用する と、実行時エラー91(オブジェクト変数または With ブロック変数が設定されていません)が発生する。 従って、此の方法で、セル範囲を配列に格納するのは、VBA 専用の方法と謂う事に成る。勿論、2 次元配列の値 をセル範囲に流し込むのは、Visual Basic.NET 以降でも問題は無い。