VBA自作関数

部屋割りマクロ(Excel)(2)

部屋割りマクロ クラスを使ってみる 部屋を表すクラスを作って、部屋の数だけインスタンスを生成し、部屋が人間を取り合うようなイメージでコーディングしてみた。 Roomクラス クラスモジュールを挿入し、オブジェクト名は「Room」とした。 リスト1 クラス…

部屋割りマクロ(Excel)のリファクタリング(3)

部屋割りマクロのリファクタリング 傍流の処理を外に出す 前回の akashi-keirin.hatenablog.com のリスト2では、大まかに言って 引数のチェック 定員表の配列化 振り番処理 の3つの処理を行っていた。 メインの処理は、当然 3. の振り番処理。あとの2つは…

部屋割りマクロ(Excel)

部屋割りをサクッと済ませるマクロ 部屋割りマクロ 部屋の定員数に応じて、部屋割りをサクッとやってくれるマクロを作ってみた。 同じ定員数の部屋ばっかりだと、単純にmod演算子を使ったループで一発なんだけれど、定員数に凸凹があるときに、定員数順に前…

フォルダ選択ダイアログを表示させるFunction

フォルダを選択させてフォルダパスを取得するFunction ファイルをリネームするマクロを作るにあたり、保存先をその都度選べるようにした方が汎用性が高いと思ったので、Functionにしてみようと思った。 すでに akashi-keirin.hatenablog.com このときにクラ…

Wordの表から文字列を取り出すFunction

Wordの表の文字列を取得するFunction Wordの表の文字列を取得する 「書類の電子化」と言いつつ、 単に紙をWordとかにしただけ という凶悪な職場はいまだに一定の数存在すると思う。 んで、いろんなところからWordドキュメントが集まってくるわけだが、そんな…

プロシージャを別プロシージャの引数にする?

プロシージャ名を引数にして別プロシージャに渡す??? Application.Runメソッド プロシージャの実行時間を計測するFunctionを作りたいなーと思って調べてみたら、 Application.Runメソッド というものを使えばよいと分かったので、やってみた。 GetTickCou…

テキストファイルからテキストを読み込んで配列化するFunction

テキストファイルを読み込んで文字列を行ごとに配列化するFunction テキストファイルを開いて読み込む VBAエキスパート公式テキスト ExcelVBAスタンダードの217ページによると、 テキストファイルを開くには、Openステートメントを使います。(中略)テキス…

指定した文字列のフォントを狙い撃ちで変えるマクロ[Word]

Wordで指定した文字列だけ狙い撃ちでフォントを変えるマクロ 文字列単位でフォントを変える 1文字単位でフォントを変える、というのは過去にやったことがあるが、それだと巻き添えで関係のないところまでフォントが変わってしまうので、ちょっとメンドクサ…

フォントが存在するかどうかを判定するFunction [Word]

指定したフォントの存否を調べるFunction 指定したフォントが存在するかどうかをどうやって調べるのか だいぶ前に、超有名なOffice TANAKA さんのサイトで、 フォントの一覧を取得するマクロ というものを見たことがあった。 んで、単純にこれをWordに移植で…

Excel VBA を使ってグラフを描く

素人、グラフに挑戦する ExcelVBAでグラフを描く 実は、今までほとんどExcelでグラフを使ったことがなかったのである。 まったくグラフを使うことがなかったわけではないが、ずーっと前に誰かが作ったグラフをちょこちょこっといじくる程度で乗りきっていた…

範囲内の文字列を配列化するFunction

範囲内の各セルの値(文字列)を配列化するFunction 範囲内の文字列の配列化 この間、 特定の文字列のみ狙い撃ちでゴシック体にする みたいなくそめんどくさい作業に遭遇した。 もちろん、ちゃちゃっとコード書いて瞬殺したんですが、そのときに、 対象の文…

HTMLのtable要素を作るFunction(2)

HTMLのtable要素を作成するマクロの改良 前回の akashi-keirin.hatenablog.com こいつを改良してみた。 行・列結合への対応 HTMLのtable要素で、行結合とか列結合をする場合は、タグとかタグの中に、それぞれ「rowspan="2"」とか、「colspan="3"」などと書き…

HTMLのtable要素を作るFunction

HTMLのtable要素を作る HTMLで表を作るのはメンドクサイ Excelでちゃちゃっと表を作って、それをHTMLタグで囲って構造化するマクロを作った。 リスト1 標準モジュール Public Function createHTMLTable( _ ByVal targetRange As Range, _ Optional ByVal ha…

Application.Intersectメソッドを使う

セルが指定した範囲内にあるかどうかを判定するFunction Application.Intersectメソッドを使う 何気なく日経ソフトウエアの1月号を読んでいたら、武藤玄氏の連載記事「実務ですぐに役立つExcel VBA」の中に、次のような記述があった。 Intersectメソッドは…

揮発性関数(Application.Volatileメソッド)

揮発性関数??? Application.Volatileメソッド 前回の akashi-keirin.hatenablog.com に、id:imihito さんからコメントをいただいた。 曰く、「きっと うまく いくでしょう」 `Excel.Application.Volatile`メソッドを使えば、その関数を揮発性関数にできた…

連想配列(Scripting.Dictionaryオブジェクト)というものを使ってみた

初めての連想配列 「連想配列」とか、「Dictionary」という言葉は見たことがあったけれど、使ったこともなく、詳しく知ることもなかった。 自作クラスのエラーメッセージを管理するのがメンドクサイなーと思って、「そういえば……」とちょっと調べてみると、…

VBAの「コンストラクタに引数渡せない」問題

VBAの「コンストラクタに引数を渡せない」問題 VBAでクラスモジュールを使い始めたときに必ずぶち当たるのが、 なんでコンストラクタに引数が渡せねえんだよ! この金髪豚野郎!!!!!!!!! 問題だろう。(個人の感想です) これは本当に不便な話で、「VBAのイマ…

がんばれ! isKanjiメソッドくん!!!!!!!!

文字列から漢字のみ抽出する isKanjiメソッドを強引に使う 前回 akashi-keirin.hatenablog.com 作成したisKanjiメソッドの使いどころを無理矢理発明した。 準備 まず、 こんな風にシートを作っておいて、A1セルに「TextCell」、C2セルに「BaseCell」と名…

文字が漢字かどうかを判定するFunction

文字が漢字かどうかを判定するFunction 漢字かどうかの判定 文字が漢字かどうかを判定するロジックを考えた。 画像の出典はコチラのサイトっす。 Shift_JISの文字コード表を見ると、漢字は 889F以降に割り当てられているっぽい。 16進数の889Fってのは、 こ…

直近○回分のイベント発生日時を配列化するFunctionの修正

直近のイベント発生日時を配列化するFunctionの修正 このとき akashi-keirin.hatenablog.com 作成したFunctionについて、対応できるイベントを増やそうとして、いろいろ不具合に気づいたので修正する。 コードへのリンクはコチラ。 1.無意味な判定をやめる…

「直近○回分のシャットダウン日時」の配列を返すFunction

直近のイベント発生日時を配列化するFunction このとき akashi-keirin.hatenablog.com 作成したFunctionは、 直近のイベント日時を取得するFunctionだったが、これをちょいと改造して、 直近○回分のイベント日時を取得して配列化するFunction にする。 改造…

直近の起動・終了日時を取得するFunction(2)

直近のイベント日時を取得するFunctionの改良 前回 akashi-keirin.hatenablog.com の続きです。 イベントコードを引数として受け取る 前回は、シャットダウン日時を取得するFunction、起動日時を取得するFunctionの2種類を作ったわけだが、記事中でも言及し…

直近の起動・終了日時を取得するFunction

Windowsの起動・終了時刻を返すFunction ※改良版はコチラ。 直近の起動・終了時刻を返す 前回の akashi-keirin.hatenablog.com のリスト1に手を加えて、 直近のシャットダウン日時 今回の起動日時 を取得するFunctionを作ってみる。 今回作成したコード と…

乱数を格納した配列を作るFunction

文字をランダムに並べ替える 乱数を作るのはめんどくさい ランダムに並べ替えるという作業をするときには、乱数を発生させて使えば良いのだが、毎度毎度乱数を発生させる処理を書くのは正直メンドクサイ。 最大数を与えたら、1~最大数をランダムに並べて配…

○箇月後の○曜日――改良版

「○箇月後の○曜日」割り出しFunctionの改良 akashi-keirin.hatenablog.com VbDayOfWeek型の引数 Twitterのフォロワー氏、及びid:imihito さんが教えてくださった。 vbSundayとかvbMondayって、単なる組み込み定数だと思っていたけれど、正体はVbDayOfWeek列…

○箇月後の直近の○曜日は?

○箇月後の○曜日の日付を求める自作Function 「1箇月後の直近の木曜日を求める」という作業が発生した。別に、暦を見たらいいんだけれど、もし今後たくさんの日付について同じ作業をする必要が生じたらメンドウなので、ちょこちょこっと「1箇月後の直近の木…

列番号を列符号に変換する関数

列符号を割り出す関数を作る Split関数の挙動 セルのAddressプロパティを取得すると、例えばA1セルなら、「$A$1」という文字列が返る。 ということは、「$」をデリミタとしてSplit関数を使えば、列符号を表す「A」がSplit関数の返り値である配列のどこかに…

ゼロ埋め番号文字列を作る関数を自作した

ゼロ埋め番号を作る関数 調子に乗って関数化 こいつら akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com をもとに、最大数に応じてゼロ埋め数字の文字列を返す関数を作ってみた。 仕様 書式 createNumberFilledByZero(最大数 , 対象数) 第1引数…