End

対象セル範囲の領域における終端のRangeオブジェクトへの参照を返します。「[End] + 矢印キー」を押す操作と同等です。

構文
Range = Range.End( Direction )
引数
Direction
移動する方向です。XlDirection定数。
戻り値

Range オブジェクトを返す可能性のあるメソッド・プロパティ

Range.End プロパティ (Excel)
End (Excel)
Application.Cells プロパティ (Excel)
Range.Find メソッド (Excel)
Range.SpecialCells メソッド (Excel)
Range.Columns プロパティ (Excel)
Range.CurrentRegion プロパティ (Excel)
Range.End プロパティ (Excel)
Range.EntireColumn プロパティ (Excel)
Range.EntireRow プロパティ (Excel)
Range.Item プロパティ (Excel)
Range.Offset プロパティ (Excel)
Range.Resize プロパティ (Excel)
Range.Rows プロパティ (Excel)

定数一覧

XlDirection 列挙

名前説明
xlUp-4162上へ
xlToRight-4161右へ
xlToLeft-4159左へ
xlDown-4121下へ
CONST xlUp = -4162
CONST xlToRight = -4161
CONST xlToLeft = -4159
CONST xlDown = -4121

プログラム実行例

A列の最終行から上方向の終端セルを選択*

CONST xlUp = -4162

Excel.Cells(Rows.Count, 1).End(xlUp).Select
  1. Excel.Range.End
  2. Excel.Range.Select

1行目の最終列から左方向の終端セルを選択*

CONST xlToLeft = -4159

Excel.Cells(1, Columns.Count).End(xlToLeft).Select
  1. Excel.Range.End
  2. Excel.Range.Select

A1セルから右下方向の終端セルを選択*

A1セルが表の先頭であり空白データがない場合、表の右下のセルを選択できます。

CONST xlDown = -4121
CONST xlToRight = -4161

Excel.Range("A1").End(xlDown).End(xlToRight).Select
  1. Excel.Range.End
  2. Excel.Range.Select

ソート

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

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

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
  1. ExcelBoot
解説
  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 xlUp = -4162
CONST xlLineMarkers = 65

DIM year = 2020
DIM month = 8

DIM IE = IEBoot()
IE.Navigate("https://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=14&block_no=47412&year=" + year + "&month=" + month + "&day=&view=p1")
BusyWait(IE)

DIM array[-1][-1]
DIM element = IE.document.getElementById("tablefix1")
getTableData(element, array)

IE.Quit

DIM Excel = XLOPEN()
DIM SheetName = Excel.ActiveSheet.Name

XLSETDATA(Excel, array, "A1")

DIM row = Excel.Cells(Excel.Rows.Count, 1).End(xlUp).Row
DIM Charts = Excel.Charts.Add

WITH Charts
	.ChartType = xlLineMarkers
	.SeriesCollection.NewSeries
	.HasTitle = TRUE
	.ChartTitle.Text = "札幌 " + year + "年" + month + "月気温"

	WITH .FullSeriesCollection(1)
		.XValues = "=Sheet1!$A$5:$A$35"
		.Name = "=<#DBL>最高気温<#DBL>"
		.Values = "=Sheet1!$H$5:$H$35"
		WITH .Format
			.Fill.ForeColor.RGB = 255
			.Line.ForeColor.RGB = 255
		ENDWITH
	ENDWITH

	WITH .FullSeriesCollection(2)
		.XValues = "=Sheet1!$A$5:$A$35"
		.Name = "=<#DBL>最高気温<#DBL>"
		.Values = "=Sheet1!$I$5:$I$35"
		WITH .Format
			.Fill.ForeColor.RGB = 16711680
			.Line.ForeColor.RGB = 16711680
		ENDWITH
	ENDWITH
ENDWITH

//////////////////////////////////////////////////
// 【引数】
//   IE : IEオブジェクト 
// 【戻値】
//   
//////////////////////////////////////////////////
PROCEDURE BusyWait(Var IE)
	SLEEP(0.500)
	DIM t = GETTIME()
	TRY
		REPEAT
			DIM tm = GETTIME() - t
			FUKIDASI("BusyWait:" + tm)
			SLEEP(0.010)
			IF tm >= 60 THEN BREAK
		UNTIL !IE.Busy AND IE.readyState = 4
	EXCEPT
		IE = getIEObj(-1)
		PRINT IE.document.URL + " のIEオブジェクトを取得しました。"
		BusyWait(IE)
	ENDTRY
	FUKIDASI()
FEND

//////////////////////////////////////////////////
// 【引数】
//   文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 
//   完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) 
// 【戻値】
//   Internet Explorerオブジェクト 
//////////////////////////////////////////////////
FUNCTION getIEObj(str, flg = FALSE)
	DIM Shell = CREATEOLEOBJ("Shell.Application")
	SELECT CHKNUM(str)
		CASE TRUE
			DIM cnt = 0
			SELECT TRUE
				CASE str > 0
					FOR n = 0 TO Shell.Windows.Count - 1
						TRY
							IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN
								cnt = cnt + 1
								IFB str = cnt THEN
									RESULT = Shell.Windows.Item(n)
									EXIT
								ENDIF
							ENDIF
						EXCEPT
						ENDTRY
					NEXT
				CASE str = 5
	SELEND
	RESULT = ERR_VALUE
FEND

//////////////////////////////////////////////////
// 【引数】
//   table : tableエレメント 
//   arr : 取得したデータを格納する配列(参照引数) 
// 【戻値】
//   
//////////////////////////////////////////////////
PROCEDURE getTableData(table, Var arr[][])
	rowMax = table.rows.length - 1
	colMax = 0
	FOR row = 0 TO table.rows.length - 1
		IFB table.rows(row).cells.length - 1 > colMax THEN
			colMax = table.rows(row).cells.length - 1
		ENDIF
	NEXT
	DIM arr[rowMax][colMax]
	FOR row = 0 TO table.rows.length - 1
		FOR col = 0 TO table.rows(row).cells.length - 1
			n = 0
			WHILE arr[row][col + n]  ""
				n = n + 1
			WEND
			arr[row][col + n] = table.rows(row).cells(col).innerText
			IFB table.rows(row).cells(col).rowSpan > 1 AND table.rows(row).cells(col).colSpan > 1 THEN
				rmax = table.rows(row).cells(col).rowSpan - 1
				cmax = table.rows(row).cells(col).colSpan - 1
				FOR r = 1 TO rmax
					FOR c = 1 TO cmax
						arr[row + r][col + c] = "←"
					NEXT
				NEXT
			ENDIF
			IFB table.rows(row).cells(col).rowSpan > 1 THEN
				n = table.rows(row).cells(col).rowSpan - 1
				WHILE n
					arr[row + n][col] = "↑"
					n = n - 1
				WEND
			ENDIF
			IFB table.rows(row).cells(col).colSpan > 1 THEN
				n = table.rows(row).cells(col).colSpan - 1
				WHILE n
					arr[row][col + n] = "←"
					n = n - 1
				WEND
			ENDIF
		NEXT
	NEXT
FEND

//////////////////////////////////////////////////
// 【引数】
//   InPrivate : InPrivateブラウズ・モードを有効にするときはTRUEを指定(デフォルトはFALSE) 
// 【戻値】
//   InternetExplorerオブジェクト 
//////////////////////////////////////////////////
FUNCTION IEBoot(InPrivate = FALSE)
	DIM IE
	SELECT InPrivate
		CASE TRUE
			DOSCMD("start iexplore -private")
			GETID("InPrivate - Internet Explorer - [InPrivate]", "IEFrame", -1)
			IE = GETACTIVEOLEOBJ("InternetExplorer.Application","InPrivate - Internet Explorer - [InPrivate]")
		CASE FALSE
			TRY
				IE = CREATEOLEOBJ("InternetExplorer.Application")
				IE.Visible = TRUE
			EXCEPT
				EXEC("C:\Program Files\Internet Explorer\iexplore.exe")
				GETID("Internet Explorer", "IEFrame", -1)
				TRY
					IE = GETACTIVEOLEOBJ("InternetExplorer.Application")	
				EXCEPT
					IE = getIEObj(-1)
				ENDTRY
			ENDTRY
	SELEND
	RESULT = IE
FEND
  1. IEBoot
  2. IE.Navigate
  3. BusyWait
  4. document.getElementById
  5. getTableData
  6. XLOPEN
  7. Excel.Application.ActiveSheet
  8. Excel.WorkSheet.Name
  9. XLSETDATA
  10. Excel.Application.Cells
  11. Excel.Range.End
  12. Excel.Range.Row
  13. Excel.Application.Charts
  14. Excel.Sheets.Add
  15. Excel.Charts
  16. Excel.Chart.ChartType
  17. Excel.Chart.SeriesCollection
  18. Excel.SeriesCollection.NewSeries
  19. Excel.Series
  20. Excel.Chart.HasTitle
  21. Excel.Chart.ChartTitle
  22. Excel.ChartTitle.Text
  23. Excel.Chart.FullSeriesCollection
  24. Excel.FullSeriesCollection
  25. Excel.FullSeriesCollection.Item
  26. Excel.Series.XValues
  27. Excel.Series.Name
  28. Excel.Series.Values
  29. Excel.Series.Format
  30. Excel.FillFormat.ForeColor
  31. Excel.ColorFormat.RGB
  32. Excel.LineFormat.FontColor
結果