Logic

関数リファレンス

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プロパティを実施した結果の行番号を返します。
関数リファレンス

F0000050_指定したフォルダが存在しない場合、フォルダを新規作成する

この関数についてExcelVBA(マクロ)でフォルダを作成する場合、「MkDir」もしくは「FileSystemObject」を使用するのが一般的です。しかしすでに同名のフォルダ存在していたり、存在しない階層に新たなフォルダを作成しようとす...
関数リファレンス

F0000049_指定した文字列をブック内で重複しないワークシート名称へ変換する

ExcelVBA(マクロ)でシート名を変更することは簡単です。シートオブジェクトを作成し、Nameプロパティを書き換えます。しかし、手動で実施するシート名の変更と同じく、すでに存在しているシート名を指定するとVBAはエラーを吐きます。この関数は文字列をブック内で重複しないシート名へ変換します。
関数リファレンス

F0000048_文字列から改行コードを取り除く

ExcelVBA(マクロ)でcsvデータの加工をしたいという需要は高いです。csvデータのを取り扱う際に注意したいことの一つが改行文字(改行コード)の取り扱いです。データの中に含まれる改行と1レコード(行)の終わりを表す改行はしっかり使い分ける必要があります。時にはセルに入力された改行コードを取り除いてからcsvデータに加工するという処理をすることもあるでしょう。この関数では、文字列に含まれる改行コードを取り除きます。
関数リファレンス

F0000047_指定したパスにフォルダが存在するか調べる

この関数についてExcelVBA(マクロ)でファイルやフォルダを扱う場合によく使用される「FileSystemObject」は参照設定をするか、CreateObjectを使用する必要があります。どちらも記憶を頼って記述するには「FileSy...
関数リファレンス

F0000046_指定したパスにファイルが存在するか調べる

ExcelVBA(マクロ)でファイルやフォルダを扱う場合によく使用されるのは「FileSystemObject」は参照設定をするか、CreateObjectを使用する必要があります。どちらも記憶を頼って記述するには「FileSystemObject」の利用頻度も高いわけではなく、宣言の方法を毎度ネット検索に頼っている方は多いと思います。この関数は「FileSystemObject」の宣言ごと関数化しているため「FileSystemObject」の宣言や参照設定を意識することなくファイルの存在確認をすることができます。
スポンサーリンク