Excelのワークシートの最下行と最右列を取得

Excelのマクロでデータがセットされている最も下の行を求める場面はよくあります。
ワークシートにA1セルを起点(左上)とする一般的な表がある場合、
Cells(Rows.Count, 1).End(xlUp).Row
とすることで取得できます。
Cells(Rows.Count, 1)はワークシートのA列の最も下のセルを表します。Excel2013ならば1048576になります。
End(xlUp)はCtrlを押しながら上向き矢印を押したのと同じ効果があります。つまり最も下のセルから上に向かってデータがセットされているセルを探します。
Rowで行番号を表します。
これならば万が一、表の左端に空のセルがあっても求められます。
最も右の列を求めるのも同様です。

まとめると次のようになります。

最も下の行番号
Cells(Rows.Count, 1).End(xlUp).Row

最も右の列番号
Cells(1, Columns.Count).End(xlToLeft).Column

なお範囲を取得するにはCurrentRegionを使う方法もあります。

複数のWord文書に対して文字列置換

フォルダを指定し、その中のWord文書に対して、文字列の置換をするマクロです。
まず置換前の文字列と置換後の文字列を入力します。
その後、フォルダを選択します。
実行されるとファイルを開き置換を行い上書き保存します。これを繰り返します。 (さらに…)

「エンジニアが1時間未満で解くべき五つの問題」をVBAで解く

今年、流行った「五つの問題」を今頃、知りました。
色々な言語での解答が発表されていますが、おそらく誰もやらないであろう、VBAで挑戦してみました。
私がVBAの最大の弱点だと思うのが配列。ところがこの「五つの問題」はどれも配列を使わないと解けません。これに苦戦しました。 (さらに…)

VBAで順列

VBAで配列を与えると全ての順列を返すユーザー定義関数を紹介します。
JavaScriptの配列関連メソッドをVBAのユーザー定義関数に | You Look Too Cool
で紹介したユーザー定義関数のうち「splice」「push」「concat」が必要です。 (さらに…)

全てのシートの名前を配列で取得するマクロ

開いているExcelブックのすべてのシートの名前を配列で取得するマクロです。
これ自体は意味がないですが、他のマクロに組み込んで使えると思います。
Excel2013で確認しました。 (さらに…)

WordマクロのFindのプロパティ(まとめ)

Wordマクロ(VBA)で文字列の置換をする場合には次のように書きますが、Findのプロパティが色々あって分かりにくいので使いそうなものについて調べてみました。
Word2013で確認しました。 (さらに…)

外字の有無をチェックするユーザー定義関数

もう2015年だというのにWindowsで「外字」を使ったデータに遭遇しました。
標準で使える文字に置き換える、もしくは文字を画像として作るのが定番となって久しいと思っていたので、驚きました。
ともあれ、外字の有無をチェックする必要が生じたので、ユーザー定義関数を作ってみました。

シフトJISの場合、16進で0xF000-0xFFFCが外字の領域になります。
VBAにはAscという関数があり、文字列の先頭のコードを返します。このコードはシフトJISのコードと比べると、外字の領域を含む範囲では、ちょうど0x10000の分だけ少ないので、これを利用します。 (さらに…)

ExcelのテーブルをJSON形式に変換するマクロ

ある目的があって試しに作ってみたところ簡単にできたものの実際には使わなかったマクロを紹介します。
ExcelのテーブルをJSON形式に変換するマクロです。
次のような表があったとします。 (さらに…)

Wordでパスワードなしで上書き保存するマクロ

以前、パスワードが設定されているExcelを開いた後、パスワードなしで上書き保存するマクロを紹介しましたが、今回はそのWord版です。
Excel2013で確認しました。 (さらに…)

VBAでクイックソート(改良版)

前にVBAでクイックソートをする方法を紹介しましたが、配列の扱いがよく分からず、CSVに変換して行う方法でした。
今回、配列の処理方法が分かったので、コードを書き直してみました。
処理が劇的に速くなりました。バブルソートなど他のソートとは比較になりません。 (さらに…)

新しい記事 | 古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報