三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

よく検索されるキーワード: [VBA]/ [VBS]/ [CreateObject]/ [Excel]/ [ADO]


Excel VBAで最終行を求める VBSで使うには Excelの定数を使う方法

例題として
Excelのデータ最終行までを処理するコードをVBSで実行してみます

下記、いつもの解説動画です※蛇足付きですがよろしく。
【VBS】VBSでExcelの定数xlDownなどを使う方法 例.End(xlDown).Rowで最終行【三流君】 - YouTube
www.youtube.com

最終行までループさせるコードでよく見かけるのが

Range("A1").End(xlDown).Row
などで、
データの入ってる最終行を求め、
ループで回す方法です。

Sub test最終行までループする()
    Dim i As Long
    Dim MaxRow As Long
    
    MaxRow = Range("A1").End(xlDown).Row
    For i = 2 To MaxRow
        MsgBox i & "行目" & Cells(i, "B") & " さん"
    Next i
    
End Sub

これをVBSに移植すると

1.エラーの例

'errサンプル
Option Explicit

Dim ex, bk, sh, i

Set ex = GetObject(,"Excel.Application") '開いているExcel

Set bk = ex.Workbooks(1)   'ブック

Set sh = bk.Worksheets(1)  'シートを指定

For i = 2 To sh.Range("A1").End(xlDown).Row  'シート最後までループ
    MsgBox i & "行目" & sh.Cells(i, "B") & " さん"
Next

xlDownでエラーが発生する
VBScriptExcelの定数xlDownが定義されていないため

2.定数を調べて直接書く方法
定数がエラーなので、
ExcelVBA イミディエイトやネットでxlDownの値を調べて書く

? xlDown

  • 4121

f:id:ken3memo:20180711035124j:plain

Option Explicit

Dim ex, bk, sh, i

Set ex = GetObject(,"Excel.Application") '開いているExcel

Set bk = ex.Workbooks(1)   'ブック

Set sh = bk.Worksheets(1)  'シートを指定

For i = 2 To sh.Range("A1").End(-4121).Row  'シート最後までループ
    MsgBox i & "行目" & sh.Cells(i, "B") & " さん"
Next

みたいに、
sh.Range("A1").End(-4121).Row
と直接書く方法もあります。

3.定数をConstで定義する
sh.Range("A1").End(-4121).Row
これだと、後からソースを見た時に
.End(-4121)?ってなると思います。
※コードの意味が伝わりにくいです

そこで、頭で自分でxlDown=-4121を定義しておきます。

Option Explicit

Const xlDown = -4121  '定数をConstで定義

Dim ex, bk, sh, i

Set ex = GetObject(,"Excel.Application") '開いているExcel

Set bk = ex.Workbooks(1)   'ブック

Set sh = bk.Worksheets(1)  'シートを指定

For i = 2 To sh.Range("A1").End(xlDown).Row  'シート最後までループ
    MsgBox i & "行目" & sh.Cells(i, "B") & " さん"
Next

ポイントは、
Const xlDown = -4121 '定数をConstで定義
として(書いて)、
For i = 2 To sh.Range("A1").End(xlDown).Row

使います。

Excel VBA を VBSに移植するときに
定数の探り方やエラーが出た時の参考となれば。。。



余談、元ネタ
ken3memo.hatenablog.com
先輩やネット上のコードは正しく理解して使いましょう?
コードは言語なので、書き手のクセや表現方法があるのかも?


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~