サンプルコード
文字列中の半角カナを全角カナに変換する場合は、StrConv関数を使用します。しかし半角⇒全角を行う引数vbWideはすべての半角文字を変換してしまうため、半角英字や半角数字をそのままにする処理が必要です。
文字の種類(数字/アルファベット/カナ)を判定する方法を解説します。主にLike演算子を利用し、数字なら"#"、アルファベットなら"[A-Z]"または"[a-z]"、カナなら"[ァ-ヶ]"などの文字列と比較して判定します。
生年月日から年齢を計算する方法を解説します。シート関数のDATEDIF関数とは異なり、VBAのDateDiff関数では一発で求めることができませんので、Formulaプロパティ、Evaluateメソッド、自作関数で対応します。
数値の0埋めにはFormat関数を利用します。ただし、変数に入れるときはString型、セルに出力する際は書式を「文字列」にするか値の先頭にシングルクォーテーション「'」を付けてから出力する必要があります。
数値が何桁か数える場合は、Len関数を使用します。ただしLen関数は「String型以外に使用すると使用するメモリ数を返す」という仕様があるため、CStr関数を使って一度文字列にしてから実行してください。
Excel2024からActiveXコントロールが使用できなくなるにあたり、指定の図形がActiveXコントロールか判定する方法と、ブック内のすべてのActiveXコントロールを取得する方法をそれぞれ解説します。
小計行や商品種別の切り替わる行など、データの区切りごとに改ページを挿入する方法を解説します。PageBreakプロパティで既存の改ページを判定しながら、条件を満たす行ごとに同プロパティで改ページを設定します。
ダブルクリックをするごとにON-OFFが切り替わる、リスト内を順送りするような機能をシート上に実装する方法を解説します。セルに設定したドロップダウンリストの値をループさせる方法もあわせて解説します。
環境依存文字をコード上に書こうとすると「?」マークになってしまいます。このようにコード上(VBE)に表示できない環境依存文字をセルに出力するには、ChrW関数に対象の文字コードを渡して文字を取得します。
DictionaryはKeyからItemを取得するオブジェクトですが、逆にItemからKeyを取得する方法を解説します。といってもそんなプロパティはありませんので、自作関数を作ってゴリ押しするよりほかありません。
Dictionaryは中身の確認が難しい欠点があります。ローカルウィンドウでKeyは見れますがItemは見ることができません。この対策として「Dictionaryを新規シートに出力する」マクロを用意するのがおすすめです。
文字列内に特定の文字列があるかを判定する方法を解説します。InStr関数とLike演算子を使う2つの方法があり、単純な判定ならInStr関数を使うのが簡単で、複雑な判定を行う場合はLike演算子の方が機能が多く便利です。
ファイル名から拡張子を取り出す方法を解説します。FileSystemObjectのGetExtensionNameメソッドを利用する方法と、InstrRev関数+Right/Mid関数を使用する方法の2種類があります。
現在開いているブックをコピーするには、FileSystemObjectのCopyFileを使用し、「FSO.CopyFile コピー元ファイルパス, コピー先ファイルパス」を実行します。この処理はFileCopyステートメントでは実行できません。
Dictionaryの活用例として、データ集計マクロを作成してみます。Itemに値を保管する手段としてDictionary/配列/クラスなどがありますが、本ページでは「ItemにもDictionaryを格納」パターンを紹介します。
Dictionaryの活用例として、データ集計マクロを作成してみます。Itemに値を保管する手段としてDictionary/配列/クラスなどがありますが、本ページでは「Itemに自作クラスを格納」パターンを紹介します。
Dictionaryの活用例として、データ集計マクロを作成してみます。Itemに値を保管する手段としてDictionary/配列/クラスなどがありますが、本ページでは「Itemに一次元配列を格納」パターンを紹介します。
配列をマクロに利用する際、中身を確認するのにひと手間かかるのですが、「新規シートに配列を出力する」マクロを用意することで対策ができます。フィルターを設置することでデバッグ作業の効率が上がります。
配列の中に配列が入っている、いわゆるジャグ配列を、ただの二次元配列に変換するコードを紹介します。DictionaryのItemに配列を入れた際、Itemsで生成されるジャグ配列をセルに一括出力するなどに活用できます。
クラスモジュールづくりのサンプルとして「色の操作を補助するクラス」を作ってみました。Property Get&Letプロシージャの勉強にピッタリな題材なので、練習がてらコードを眺めてみてください。
配列をセル範囲に一括で出力する方法を紹介します。横方向に出力する場合はRange.Value=配列、縦方向に出力する場合はRange.Value=Transpose(配列)、二次元配列の場合はRange.Value=二次元配列で実行できます。
Dictionaryの活用例として、データ集計マクロを作成してみます。Itemに値を保管する手段としてDictionary/配列/クラスなどがありますが、本ページでは「列ごとにDictionaryを作成する」パターンを紹介します。
クラスモジュールのメンバーに配列(Array)を定義する方法を解説します。Variant変数で定義することはできますが、そのままでは要素の書き換えが出来ないため、入出力用のPropertyプロシージャを作成して対応します。
配列の次元数を取得する方法を紹介します。GetDimensionのような一発で取得する組込関数、プロパティはありませんので、Uboundがエラーを出すまで次元数をループして上げてみるという方法で取得します。
WEBページ内にある表(テーブル)を、ワークシートに書き出すコードを紹介します。CSV読み込みなどに使用するQueryTableのAddメソッドにURLを渡すことで、WEBの読み込みも行うことができます。
列番号を管理する方法として、列挙型変数Enumを用いる他に、Dictionaryを用いる方法もあります。特に「同じコードをレイアウトの異なるシートに対して実行できる」のが強みですので一度使ってみてください。
破損したブックを修復して開くには、Workbooks.OpenメソッドでCorruptload:=xlRepairFileを指定すればいいのですが、これは破損していないブックも修復済みにしてしまうため、まずは普通に開く→失敗したら修復という手順を踏む必要があります。
ブックの読取専用推奨メッセージを無視して書き込み権限で開きたい場合は、Workbook.OpenメソッドのIgnoreReadOnlyRecommendedをTrueにすればOKです。DisplayAlerts=False、ReadOnly:=Falseではいずれも読取専用になるためご注意ください。
ファイルを新規保存したりコピー・移動する際に、既存ファイルを上書きしないよう連番を付与するコードは関数化しておくと便利です。ファイルが存在しなくなるまでiを増やし、ファイルベース名 & (i) & 拡張子を結果値として返すことで実装できます。
同じ名前のフォルダがある場所にフォルダを移動すると、手作業であればフォルダを統合することができます。しかしVBAにはその機能がないため、フォルダ内の全ファイルを判定しながら移動していき、最後に元フォルダを削除する必要があります。