VBA

Thumbnail of post image 164

概要

VBAのCollectionのRemove関数は、インデックス指定による削除しか対応していなかったため、値指定で削除できる関数を作成しました。なお、VBAは値型とオブジェクト型で等価演算子が異なるため、作成した関数には3つのバリエ ...

VBA

Thumbnail of post image 127

はじめに

今回はVBA単独でFor Eachに対応した自作クラスを作成する方法を説明します。この手の説明では、よくCollectionかDictionaryの_NewEnum()を呼び出す手法を紹介しているサイトがありますが、本記事では ...

VBA

Thumbnail of post image 158

事の発端

先日、とあるExcel VBAの速度が、期待したより遅い事象が発生しました。どこで遅くなっているか調査した結果、原因はWindows APIのCopyMemory(RtlMoveMemory)でした。VBAの標準機能ではポイン ...

VBA

Thumbnail of post image 121

概要

VBAからWindows APIを呼び出す場合、実行環境にインストールされたOfficeのバージョンに注意が必要です。特に、実行環境にOfficeの32ビットバージョンと64ビットバージョンが混在している場合、Declareから始 ...

VBA

Thumbnail of post image 159

概要

Excel VBAのThisWorkbook.FullNameやThisWorkbook.Pathなどで絶対パスを取得する際、ExcelファイルがOneDriveに保存している場合、これらのメソッドはパスではなくURLを返すことが ...

VBA

Thumbnail of post image 112

概要

VBAで二分検索を実装しました。O記法での平均計算量はO(log n)です。二分検索はソート済みのランダムアクセス可能なデータ構造にのみ適用可能なアルゴリズムで、今回は一次元配列内を二分検索する実装にしました。戻り値は発見した要素 ...

VBA

Thumbnail of post image 157

はじめに

ホームページで公開されているカスタムワークシート関数(以下、「カスタム関数」と記載)を、ワークシート上で使用する方法を説明します。カスタム関数とは、ワークシート関数であるSUM関数やAVERAGE関数のような関数を、ユーザーが ...

VBA

Thumbnail of post image 194

概要

VBAでクイックソートを実装しました。O記法での平均計算量はO(n log n)です。データの並び順に規則性が無ければ、まず期待通りの性能を発揮してくれるソートアルゴリズムです。アルゴリズムの説明はWikipediaより引用させて ...

VBA

Thumbnail of post image 094

概要

VBAでコムソートを実装しました。O記法での計算量はO(n log n)です。データ量が1000件以下か、クイックソートが不得意なデータの並び順が発生する場合にご使用ください。アルゴリズムの説明はWikipediaより引用させて頂 ...