CurrentRegion

タグ:

現在の領域を表すRangeオブジェクトを返します。現在の選択範囲は、空白の行と空白の列で囲まれた範囲です。読み取り専用です。CtrlShiftCtrl)を押すのと同様です。

構文
  1. Range = Range.CurrentRegion
引数
戻り値
現在の領域を表すExcel.Range オブジェクト

Range オブジェクトを返すメソッド・プロパティ

Excel.Range オブジェクト
セル、行、列、連続した1つ以上のセル範囲を表します。
Application.Cells プロパティ
作業中のワークシートのすべてのセルを表すRangeオブジェクトを返します。
Application.Range プロパティ
セル、行、列、連続した1つ以上のセル範囲を表します。
Range.Find メソッド
セル範囲内で特定の情報を検索します。
Range.SpecialCells メソッド
指定した種類と値に一致するすべてのセルを表すRangeオブジェクトを返します。
Range.Columns プロパティ
指定した範囲の列を表すRangeオブジェクトを返します。
Range.CurrentRegion プロパティ
現在の領域を表すRangeオブジェクトを返します。
Range.End プロパティ
対象セル範囲の領域における終端のRangeオブジェクトへの参照を返します。
Range.EntireColumn プロパティ
指定された範囲を含む1つまたは複数の列全体を表すRangeオブジェクトを返します。読み取り専用です。
Range.EntireRow プロパティ
指定されたセル範囲を含む行全体を表すRangeオブジェクトを返します。読み取り専用です。
Range.Item プロパティ
指定したセル範囲のオフセット値で指定される範囲を表すRangeオブジェクトを返します。
Range.Offset プロパティ
指定された範囲からオフセットした範囲を表すRangeオブジェクトを返します。
Range.Resize プロパティ
指定された範囲のサイズを変更します。サイズが変更されたセル範囲(Rangeオブジェクト)を返します。
Range.Rows プロパティ
指定した範囲の行を表すRangeオブジェクトを返します。
Worksheet.Range プロパティ
セル、行、列、連続した1つ以上のセル範囲を表します。

セルの水平方向を中央揃えにする

セルB2を含む表のセル範囲を中央揃えにします。

CONST xlCenter = -4108

Excel.Range("B2").CurrentRegion.HorizontalAlignment = xlCenter

セルのデータを削除

セルB2を含むアクティブ領域全体のデータを削除します。

Excel.Range("B2").CurrentRegion.Clear

セルB2を含むアクティブ領域全体の書式を削除します。

Excel.Range("B2").CurrentRegion.ClearFormats

セルの数式と値を削除

セルB2を含むアクティブ領域全体の数式と値を削除します。

Excel.Range("B2").CurrentRegion.ClearContents

セルのコメントを削除

セルB2を含むアクティブ領域全体のコメントを削除します。

Excel.Range("B2").CurrentRegion.ClearComments

プログラム実行例

アクティブセル領域を含む表を選択

DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Open("D:¥Documents\東京月別平均気温(2000-2019年).xlsx")

Excel.Range("B4").CurrentRegion.Select
    (1) (1)
結果
東京月別平均気温(2000-2019年)

ソート

人口の多い順にソートします。

使用したファイルをダウンロードできます。

CONST xlDown = -4121
CONST xlSortOnValues = 0
CONST xlDescending = 2
CONST xlSortNormal = 0
CONST xlYes = 1
CONST xlGuess = 0
CONST xlTopToBottom = 1
CONST xlPinYin = 1

DIM Excel = ExcelBoot("D:\Documents\都道府県別人口.xlsx")

WITH Excel.ActiveSheet
	WITH .Sort
		WITH .SortFields
			.Clear
			.Add(Excel.Range("C2").End(xlDown), xlSortOnValues, xlDescending, xlSortNormal)
		ENDWITH
		.SetRange(Excel.Range("A1").CurrentRegion)
		.Header = xlYes
		.MatchCase = FALSE
		.Orientation = xlTopToBottom
		.SortMethod = xlPinYin
		.Apply		
	ENDWITH
ENDWITH

//////////////////////////////////////////////////
// 【引数】
//   path : 開くファイルのパス名 
// 【戻値】
//   Excelオブジェクト 
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
	DIM Excel = CREATEOLEOBJ("Excel.Application")
	Excel.Visible = TRUE
	IFB path = "" THEN
		Excel.Workbooks.Add
	ELSE
		DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
		IFB FSO.GetParentFolderName(path) = "" THEN
			path = GET_CUR_DIR + "\" + path
		ENDIF
		Excel.Workbooks.Open(path)
	ENDIF
	RESULT = Excel
FEND
    (10)
解説
  1. 10行目
    DIM Excel = ExcelBoot("D:\Documents\都道府県別人口.xlsx")
    ファイルを開く。
  2. 16行目
    			.Add(Excel.Range("C2").End(xlDown), xlSortOnValues, xlDescending, xlSortNormal)
    並び替えのキー値をセル範囲で指定。並び替えの対象に「値(xlSortOnValues)」を指定。並び替えの順序に「降順(xlDescending)」を指定。
  3. 18行目
    		.SetRange(Excel.Range("A1").CurrentRegion)
    並び替えが行われる範囲にセルA1を含む表全体を指定。CurrentRegionは空白で囲まれた範囲を取得するので、セルA1を含む表のセル範囲が取得できます。表のサイズが変わっても対応できます。
  4. 19行目
    		.Header = xlYes
    最初の行がヘッダーなので「xlYes」を指定。
  5. 20行目
    		.MatchCase = FALSE
    大文字と小文字を区別しない(False)。
  6. 21行目
    		.Orientation = xlTopToBottom
    行の入れ替えを行う。
  7. 22行目
    		.SortMethod = xlPinYin
    日本語をふりがなで並び替えます。
  8. 23行目
    		.Apply
    Sort.Applyでソートが実行されます。これを記述しないとソートされません。

空気の構成成分の割合を円グラフにする(Excel)

CONST xlPie = 5

DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Add()

DIM array[][1] = "窒素", "78.08", "酸素", "20.95", "アルゴン", "0.93", "二酸化炭素", "0.04", "その他", "0"

WITH Excel
	FOR r = 0 TO UBound(array)
		FOR c = 0 TO UBound(array[0])
			.Cells(r+1, c+1) = array[r][c]
		NEXT
	NEXT
	DIM ChartObjects = .ActiveSheet.ChartObjects
	DIM ChartObject = ChartObjects.Add(.Range("C1").Left, .Range("C1").Top, .Range("C1:I22").Width, .Range("C1:I22").Height)
	DIM Chart = ChartObject.Chart
	WITH Chart
		.ChartType = xlPie
		.HasLegend = FALSE
		.SetSourceData(Excel.Range("A1").CurrentRegion)
		.ApplyLayout(4)
	ENDWITH
ENDWITH

//////////////////////////////////////////////////
// 【引数】
//   配列 : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
FEND
    (3) (4) (5) (10,11) (12)
  1. Excel.Worksheet.ChartObjects(15)
  2. Excel.ChartObjects.Add(16)
  3. Excel.ChartObjects.Chart(16)
  4. (16,21)
  5. Excel.Range.Left(16)
  6. Excel.Range.Top(16)
  7. Excel.Range.Width(16)
  8. Excel.Range.Height(16)
  9. (16)
  10. Excel.ChartObject.ChartType(19)
  11. Excel.ChartObject.HasLegend(20)
  12. Excel.ChartObject.SetSourceData(21)
  13. (21)
  14. Excel.ChartObject.ApplyLayout(22)

コロナのPCR検査実施人数のグラフを生成(Excel)

オープンデータ|厚生労働省の「PCR検査実施人数」のCSVデータを使用。

CONST xlColumnClustered = 51

DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Open("D:\Downloads\pcr_tested_daily.csv")

DIM Range = Excel.Range("A1").CurrentRegion
DIM Charts = Excel.Charts.Add()  // Sheetsオブジェクト

WITH Charts
	.ChartType = xlColumnClustered
	.SetSourceData(Range)
ENDWITH
    (3) (4) (5) (7) (7) (8)
結果

関連記事

Application.ActiveCell プロパティ (Excel)
セルまたはセル範囲を表すRangeオブジェクトを返します。
Application.Cells プロパティ (Excel)
作業中のワークシートのすべてのセルを表すRangeオブジェクトを返します。
Application.Range プロパティ (Excel)
セル、行、列、連続した1つ以上のセル範囲を表します。
Range.Clear メソッド (Excel)
オブジェクト全体(数式・文字・書式・コメント)をクリアします。
Range.ClearComments メソッド (Excel)
指定されたセル範囲からすべてのコメントを消去します。
Range.ClearContents メソッド (Excel)
範囲内の数式と値をクリアします。
Range.ClearHyperlinks メソッド (Excel)
指定された範囲からすべてのハイパーリンクを削除します。
Range.ClearNotes メソッド (Excel)
指定されたセル範囲内のすべてのセルからコメントを削除します。
Range.ClearOutline メソッド (Excel)
指定した範囲のアウトラインを消去します。
Range.Merge メソッド (Excel)
指定したRangeオブジェクトから結合されたセルを作成します。
Range.ClearFormats メソッド (Excel)
オブジェクトの書式設定を削除します。
Range.UnMerge メソッド (Excel)
結合された領域をそれぞれのセルに分割します。
Range.Borders プロパティ (Excel)
セルの罫線を表します。
Range.Columns プロパティ (Excel)
指定した範囲の列を表すRangeオブジェクトを返します。
Range.Count プロパティ (Excel)
コレクションに含まれるオブジェクトの数を返します。
Range.MergeCells プロパティ (Excel)
セルを結合状態を設定または取得します。
Range.Rows プロパティ (Excel)
指定した範囲の行を表すRangeオブジェクトを返します。