VBA自作関数

ExcelVBAでWordドキュメントを軽量PDF化する

ExcelでWordドキュメントを軽量PDF化する ExcelでWordドキュメントのファイル名の一覧表を作って、必要なものだけPDF化する、というのがお題。 ExportAsFixedFormatメソッドを使うやつは既に作成済みなので、PDF化部分を差し替えるのが目標。 ドキュメントを…

isAutoFilteredメソッドの修正

isAutoFilteredメソッドの欠陥 isAutoFilteredメソッドとは 自作のFunction。 akashi-keirin.hatenablog.com このときに作ったもの。 こんなふうにフィルターで絞り込まれていないときにFalseを返す。 イミディエイト・ウインドウに ?isAutoFiltered(Sheet1)…

半角カタカナを全角ひらがなに変換する(StrConv関数)

半角カタカナと戦う(StrConv関数) 名簿のふりがな欄 いろんな名簿を作る必要があって、着手してから気がついた。 名簿のふりがな欄、ふりがなの付け方めちゃくちゃやんけ! ある名簿は全角ひらがな。またある名簿は半角カタカナ。 んで、StrConv関数を使っ…

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

フォルダ選択ダイアログを表示させるFunctionを改良する FileDialog.InitialFileNameプロパティ akashi-keirin.hatenablog.com このときに作成したFunctionをちょっと改良する。 このFunctionを使ってフォルダ選択ダイアログを表示させたとき、いつも不便な…

配列の次元数を取得するFunction

配列の次元数を取得する 何気なく配列をぐりぐりいじくっていたときに、ちょっとした間違いで こんなエラーが出た。まあ、よくあるエラーなんだが、このときは要素数を超えたのではなくて、存在しない次元を指定していたのだった。 ということは、LBoundとか…

Scripting.Dictionaryの要素をCollection化するFunction

Scripting.Dictionaryの要素をCollection化するFunction Scripting.DictionaryクラスのItemsメソッド 何気なくScripting.Dictionaryクラスのインスタンスをぶち込んだ変数の後に「.」(ドット)を打ち込んだら、 Intellisenseでこんなのが出た。 よく見たら…

配列の要素をCollection化するFunction

配列の要素をコレクション化するFunction 配列の要素をコレクションに格納する ちょっと思いつきで作ってみた。 リスト1 標準モジュール Public Function convertArrayToCollection( _ ByRef targetArray As Variant) As Collection If Not IsArray(targetA…

ユーザー設定のドキュメントプロパティを気軽に使う

ユーザー設定のドキュメントプロパティを操作するFunction akashi-keirin.hatenablog.com このときに、処理用パラメータの保存場所としてユーザー設定のドキュメントプロパティを使ったが、もっと気軽に使えるようにFunction化しておいた。 追加用Function …

真の最終行番号を取得するFunction(2)

真の最終行を取得するFunctionの修正 前回の akashi-keirin.hatenablog.com にさっそくツッコミがw @excelspeedupさん曰く、 currentregion使うと、完全な空白行が入っているとき誤動作しませんか? と。 ははは。確かにおっしゃるとおり。 場合分けミスで…

真の最終行番号を取得するFunction

真の最終行番号を求めるFunction Twitterで、 オートフィルターで非表示になっている行があると、最終行番号の取得に失敗して困る みたいなツイを見た。 なるほど、データの入っている最終行を非表示にして、[Ctrl]+[↑]で確かめると、確かに 表示されている…

オートフィルターの状態を取得するFunction

オートフィルターの状態を取得する 元データが置いてあるワークシートがオートフィルターで絞り込まれているのに、それに気づかずにマクロを実行してわけのわからない結果が出て(゚Д゚)ポカーンとなったことはないだろうか。 わしはある!!!!!!!! そんなわけで、オ…

部屋割りマクロ(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ってのは、 こ…