アスパLab

関数リファレンス

F0000059_配列をExcelの標準機能を使って並べ替える

配列(特に2次元)の並び替えをいかに早く実行するかはプログラマにとって共通の課題です。ExcelVBA(マクロ)においてもデータ数が数万・数十万と増えるにつれて、シートやセル上だけでデータを加工することに速度の限界を感じて配列を採用した人は多いかと思います。たしかに配列はセルと比較してデータの代入・取得の速度は段違いの早さです。しかし「並べ替え」についてはExcelの標準機能に速度の優位性があります。この関数では配列をいったん仮のシートに貼り付け、並べ替えを実施した後、配列に格納し直します。
関数リファレンス

F0000058_ファイルダイアログを開き、1つの画像ファイルを選択させる

ファイルダイアログを開き、ファイルを選択させる関数はいくつか紹介してきましたが、画像ファイルを選択させる必要のある案件があったため追加で作成しました。しかし、画像ファイルは拡張子も多くあり、自動化する業務に応じて選択可能な拡張子は変更して使用するべきかと考えています。カスタマイズ性を持たせる良い案が思いつかなかったため、いったん「png」形式の画像を選択させる内容で実装しました。他の開発案件で同様の需要があったときに改修をする予定です。
アスパLab

F0000057_yyyymmdd形式の数値を日付型に変換する

日付データの保存方法として「20250101」のような形式がよく使用されます。しかしExcelVBA(マクロ)では「20250101」を「2025/01/01」と読み替えて判定はしてくれません。専用の関数も用意されていない(誤っていたらすみません)ため作成をしました。
関数リファレンス

F0000056_ファイルダイアログを開き、選択させたcsv・Excelファイルに含まれる表を取得し配列に格納する

ファイルダイアログを立ち上げユーザーにファイルを選択させたあと、各ファイルを開き、各シートの表を取得、配列に格納するという処理が個人的に多かったのでこの関数を作成しました。基本的には当サイトで紹介している他の関数の組み合わせで実現できる内容であり、そのためにいざ使用する場面がきたとしてもこの関数の存在を忘れており、関数の組み合わせで実現してしまう・・そういう関数です。
関数リファレンス

F0000055_ファイルダイアログを開き、複数のcsvファイルもしくはExcelファイルを選択させる

当サイトでは、ExcelVBA(マクロ)で操作対象とするファイルをユーザーに選択させるための関数をいくつか掲載しています。操作対象となるのは、主にcsvファイルかExcelファイルかいずれかと考え、それぞれファイル形式のファイルを選択させる関数を用意していましたが、ユーザーにとってこの使い分けは意味がないことに気づきました。この関数では、ファイルダイアログを立ち上げてユーザーに複数のcsvファイルかExcelファイルかを選択させ、そのファイルの絶対パスを配列で返します。
関数リファレンス

F0000054_ファイルダイアログを開き、1つのcsvファイルもしくはExcelファイルを選択させる

当サイトでは、ExcelVBA(マクロ)で操作対象とするファイルをユーザーに選択させるための関数をいくつか掲載しています。操作対象となるのは、主にcsvファイルかExcelファイルかいずれかです。しかしあなたのユーザーが勤めている企業の基幹システムでは、出力するデータのフォーマットが「csv」形式か「Excel」形式かを選択可能だったりすることがあるかもしれません。そしてユーザーの中にはcsvファイルがExcelでも開けるために、両者の区別がついていない人たちが一定数存在します。この場合、どちらを選択されたとして正しく動作するように設計するのが正解と言えるかと思います。この関数では、ファイルダイアログを立ち上げてユーザーにcsvファイルかExcelファイルかを選択させ、そのファイルの絶対パスを取得します。
関数リファレンス

F0000053_ユーザーフォームのテキストボックスの入力可否を切り替える

ExcelVBA(マクロ)のユーザーフォームにはテキストボックスというオブジェクトがあり、ユーザーからの入力を受け付けたり、結果を出力したりできます。このテキストボックスには「Enabled」というプロパティがあり、入力可否の切り替えをすることができます。ただ、このプロパティを書き換えるだけでは見た目に変更がないため、ユーザーは入力可否状態を目視で認識することができません。この関数は入力可否状態を切り替えた上でテキストボックスの背景をグレーアウトします。
関数リファレンス

F0000012_配列の型を任意の型へ変換する

ExcelVBA(マクロ)では他の高級なプログラミング言語と違い、初期状態からブックが用意されシートやセルへの操作が可能です。このため、どうしても意識せざる得ないものがセルの書式です。先頭が0から始まる会員番号や、日付判定される「丁目」以降の番地や、ハイフンなしの電話番号など、そのままセルに貼り付けると意図した通りに反映しないデータが存在します。こんなとき最も単純な解決策は、データを「Variant」型ではなく「String」型で保持することです。「String」型の変数や配列をセルに代入(入力)すると、意図した通りにデータが反映します。ExcelVBAを学び始めた頃の私は上記のような問題にぶつかり型指定の重要性について考えた結果、様々なデータが混在する表は「String」型の配列として取り扱うことにしていました。しかし、関数リファレンスで紹介する関数群の戻り値は原則「Variant」型です。「String」型と宣言した配列に「Variant」型の配列を代入しようとすると「配列には割り当てられません。」エラーが発生します。前置きが長くなりましたが、すべてのデータを「String」型で扱いたかった私が作成したのがこのページで紹介する配列の型変換を行う関数です。
関数リファレンス

F0000052_配列を結合する

ExcelVBA(マクロ)で同じフォーマットのブックが複数ある。それぞれのブックには同じシート名のシートがあり、シートに配置された表を結合して、別のブックに出力する・・ということを少なからず求められることがあります。各シートの表を配列へ格納し、結合、出力シートに貼り付けみたいな動きをよくするため作りました。この関数は配列を結合して返します。
アスパLab

F0000051_データが入力されている最終の行番号を取得する

ExcelVBA(マクロ)による業務の自動化では、シートに入力されているデータを加工することが多いです。台帳や管理表に付属するマクロを考えるとき、ユーザーが行方向にデータを伸ばしていくことが想定されます。そんな時、何行目までデータが埋まっているか最終行を取得するため、セルのEndプロパティを使用して最終行を確認しましょうという記事が多いです。この関数は表に空白のレコードがある場合を想定してExcelの一番下の行からデータが入力されている行に向かってEndプロパティを実施した結果の行番号を返します。
スポンサーリンク