VBA

VBA・Office

【Excel VBA】セルの書式を変えずに置換(Replace)する方法

Excelの置換機能は、置換後に1文字目のフォントが文字列すべてに適用される仕様になっています。そのため、セル内に異なるフォントや装飾が混在している場合に不便が生じるため、文字列のフォント書式を保持したまま置換を行って元に戻すVBAマクロを...
VBA・Office

【EXCEL VBA】ワークシート(自分自身)を、新規ワークブックにコピーするサンプル2

前回のサンプルを改良し、より安全にワークシートのデータを新規ワークブックへ値コピーするExcel VBAコードです。シート全体のコピーペーストではなく、オブジェクトを明示的に変数へ格納し、値のみを選択してコピーすることで予期せぬエラーや不要...
VBA・Office

【Excel VBA】Enum(列挙型)のメンバ取得関数の作成例

C#やVB.net(最近の言語というくくり?)では、Enum(列挙型)のメンバー一覧が、簡単に取得できるがVBA だとそうはいかない。ただし、ちょっとしたマクロでもソースの可読性が高くなる定数やEnumは使うべきだし、そのメンバーを文字列で...
VBA・Office

【VBA】Excelでセル内の一部分だけ書式ごと置換

Excelの標準機能でセル内の一部分を置換すると、書式が消えて先頭文字の書式に統一されてしまいます。この記事では、VBAを使ってセル内の特定の文字を置換しつつ、元の書式を維持するためのサンプルコードを紹介します。前提条件今回のサンプルコード...
VBA・Office

【Excel VBA 】簡単なアダプター(adapter(委譲))もどき

VBAで委譲(コンポジション)を利用したシンプルなデザインパターンのAdapter(アダプター)パターンのサンプルです。CMyData.cls(データクラス)Public Name As StringPublic Sub DebugPrin...
VBA・Office

【Excel VBA 】簡単なイテレータ(iterator)もどき

VBAでデザインパターンの「イテレータ(Iterator)パターン」をガチガチに実装しようとすると手間がかかりますが、VBA.Collection オブジェクトを活用することで、シンプルな記述で For Each による反復走査を行える仕組...
VBA・Office

【Excel VBA】セル単位の目次作成用の情報収集マクロ

台帳の目次シート(セル項目とその通しページ数をまとめたもの)をメンテナンス用に作成したExcel VBAマクロです。改ページを含んだシートで、各シート内のB列・C列に必要な項目(大項目、中項目)が点在している場合でも、自動的に通しページを取...
VBA・Office

【VBA】Errオブジェクトを利用した実行時エラー時の簡単なコールスタック

VBAには他言語のような Try...Catch...Finally 構文や標準のコールスタック取得機能が用意されていないため、エラー発生時にどの経路で呼び出されたかを把握するには少し工夫が必要です。独自のエラー処理用クラスを組むほどではな...
VBA・Office

【VBA】BinaryCopy バイナリファイルのコピー処理

VBAでバイナリファイルを読み書き・コピーするサンプルコードです。単にファイルをコピーしたい場合はVBA標準の FileCopy ステートメントを使用するのが最も簡単で高速ですが、バイナリデータとして中身を処理しながらコピーしたい場合は O...
VBA・Office

【VBA】Atermシリーズの簡単ログ取得マクロ

我が家の無線LANルーター(Aterm WR8300N)が頻繁にリンクダウンを起こすようになり、状況を把握するために作成したVBAマクロです。結論から言うと、ログの内容から明確な原因を特定することは困難でしたが、VBAでHTTPデータを扱う...