VBA一般

Environメソッドというものがある

Environメソッドというものがある Wordの〝標準テンプレート〟ファイル(Normal.dotm)を、VBAでゴニョゴニョしたい、ということがあったとする。 その場合、当然ながら標準テンプレートファイルのあるディレクトリのパスを取得する必要がある。 自分一人し…

ChatGPTにコードをレビューしてもらう

ChatGPTにコードレビューをしてもらう 自作MakeUserSickメソッドを改良(?)する 今話題のChatGPTにコードを投げると、コードレビューしてもらえる。 孤独なVBAマンには実にありがたい。 そこで、わが最高傑作(?)、MakeUserSickメソッドを少し改良(?)…

【覚書】[Shell32.Shell].Namespaceメソッドの引数でハマった話

【覚書】Shell32.Shell.Namespaceメソッドの引数でハマった話 結論だけ手っ取り早く知りたい方はコチラ。 何があったのか 事の発端:Shell32.Shellオブジェクトを使うマクロ かつて、 akashi-keirin.hatenablog.com こんなネタを書いていた。 レイト・バイン…

組み込み定数(列挙体)を自作(?)しておく

組み込み定数(列挙体)を自作(?)しておく CreateObject派への転向 実は、だいぶ前からCreateObject派に転向しておりました。 やっぱり、参照設定せずに使えるってのはいいよね、ということで。 CreateObject派になって困ること いろいろあると思いますが…

フォルダのサイズを返すFunction

フォルダのサイズを返すFunction フォルダのサイズを返すFunctionを作ってみた。 FileSystemObjectを使う だいぶ前に、Twitterでノンプロ研の某氏が言っていたのを思い出した。 たしかに、Windowsのエクスプローラーでフォルダを右クリックして「プロパティ…

isKanjiメソッドを久々に修正した

漢字かどうかを判定するFunction まじめに手直しした。 元のコード コチラが、元のisKanjiメソッドのコード。 リスト1 Public Function isKanji(ByVal targetCharacter As String) As Boolean Dim char As String char = targetCharacter If Len(char) <> 1…

列の最終行を求めるアレはなぜわかりにくいのか(Excel)

「[Worksheet.]Cells([Worksheet.]Rows.Count, 1).End(xlUp).Row」はなぜわかりにくいのか 任意の列(標題の場合はA列)の下端のセルの行番号を求めるおなじみのコード。 ときどき、「なかなか覚えられねえ!」という文脈で話題になるので、ちょっと考えてみ…

ブック内で使用している関数の数をカウントするマクロ(Excel)

ブック内で使用している関数の数をカウントするマクロ(Excel) 久しぶりのExcelネタだ。 とりあえずコードをぶちまける 現在(?)、Excelには、488個の関数があるらしい。 その488の関数名をコピッペしたこんなシートを用意して、 その関数名リストの部分…

割り当てたショートカットキーを忘れないようにする

割り当てたショートカットキーを忘れないようにする これはタイトルに偽りありかも知れない。 よく使うマクロを使いやすくする クイック アクセス ツール バーを使う たとえば、前回 akashi-keirin.hatenablog.com 紹介した〝選択箇所に傍点を施すマクロ〟の…

「ネオ写経」のすすめ

「ネオ写経」のすすめ 新型コロナウイルス対応で外出の自粛が求められる中、みなさまいかがお過ごしでしょうか。 ろくにテレワーク環境も整っていないのに、「とにかくテレワークだ!」的に導入されてしまった事業所も、それなりにあると思います。 個人的に…

文字列型の列挙体?

文字列型の列挙体? かつて、 akashi-keirin.hatenablog.com こんなことを試みたことがあった。 しかし、PredeclaredIdをTrueにしたクラスモジュールを用いていたために、必ずクラス名を記述しなくてはいけなかった。 これはイマイチである。 XlLineStyle列…

Shift_JIS と UTF-8 に悩まされた話

文字コードェ…… Foobar2000のプレイリストファイルは、拡張子が「.m3u8」というけったいなもの。こいつをエディタで開くと、 こんなふうに、登録した楽曲データのフルパスを書き込んでいるだけだった。 ただ、うっとうしいのがドライブ名がジカ書きなところ…

あえて組み込みオブジェクトを低機能化させる

あえて組み込みオブジェクトを低機能化させる 組み込みオブジェクトは優秀である。 プロが作ったものなのだから、当り前である。 しかし、素人にとっては「優秀すぎて良さがわからない」こともしばしば。 そこで、初心者のうちは、 あえて低機能化させたクラ…

PropertyとSetter/Getter

PropertyとSetter/Getter 「Propertyプロシージャって、よく考えたら何なんやろ???」と思った。 現に、JavaなんかにはPropertyという仕組みはない。 比較 次のように、ParentHogeクラス、ChildHogeというクラスを作った。 ParentHogeクラスには、ChildHog…

削除しても復活するワークシートw

削除しても復活するシート 先に断っておきますが、アイディアは、ノンプロ研で出会った id:FukuCyndiP さんのものです。私はただパクっただけw ただ、某ウ〇ブカツのアホと違って、自己申告するところが人格者でしょ? 閑話休題。 このマクロの挙動 元々の…

名前定義とプロパティを組み合わせる

名前定義とプロパティを組み合わせる Sheet1オブジェクトのAhoプロパティ(Range型) セルの名前定義と、シートモジュールのプロパティを組み合わせて、次のようなものを作ってみた。 何をしているのかがわかりにくいので、Worksheet_Changeで、シートに変更…

Worksheet.Columnsプロパティの引数?

Worksheet.Columnsプロパティの引数とは? [Worksheet].Columnsプロパティの引数なんて、てっきりIndex As Variantだと思っていたのだが、みんな大好き『Office デベロッパー センター』のWorksheet.Columns property (Excel)の項には引数に関する記載がない…

CircleInvalidメソッドというものがある

CircleInvalidというメソッドがある 知ってました? 私は知りませんでした。 大絶賛シリーズPoweredSheetプロジェクトに取り組んでいるときに発見。 WorksheetクラスのメソッドにCircleInvalidというメソッドがあったのだった。 名前だけ見ても何をするメソ…

珍現象、解決(?)す

ち~んw珍現象、解決す ご心配をおかけしました。 前回 akashi-keirin.hatenablog.com のち~んw珍現象がなぜか解決いたしましたので、ご報告申し上げまする。ニンニン。 あまりにしょうもない顛末なので、怒らないように。 これまでの対処法 カウントダウ…

ユーザが選択したファイル名を取得する(6)

ユーザが選択したファイル名を取得する これまで ユーザが選択したファイル名を取得する(1) ユーザが選択したファイル名を取得する(2) ユーザが選択したファイル名を取得する(3) ユーザが選択したファイル名を取得する(4) ユーザが選択したファイル名を取得…

ユーザが選択したファイル名を取得する(5)

ユーザが選択したファイル名を取得する 一応、前回 akashi-keirin.hatenablog.com のつづき。 FileDialogFiltersオブジェクトの設定 前々回のリスト1では、FileDialogFiltersオブジェクトを設定するのに Dim fpDialog As FileDialog Set fpDialog = Applica…

ユーザが選択したファイル名を取得する(4)

ユーザが選択したファイル名を取得する 前回までの三回 akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com で、ユーザにファイルを選ばせるところまでたどり着いた。 いよいよ、選択させたファイルのフルパスを取得…

ユーザが選択したファイル名を取得する(3)

ユーザが選択したファイル名を取得する 前々回 akashi-keirin.hatenablog.com 前回 akashi-keirin.hatenablog.com の続き。 ファイルフィルタを設定する フォルダ選択と違って、ファイルには「種類」というものがあるので、いつもいつも「すべてのファイル」…

ユーザが選択したファイル名を取得する(2)

ユーザが選択したファイル名を取得する 前回 akashi-keirin.hatenablog.com の続きです。 ダイアログボックスのタイトルを設定する これはメッチャ簡単。Filedialog.Titleプロパティを設定すれば良い。 リスト1 Private Sub test() Dim fpDialog As FileDia…

ユーザが選択したファイル名を取得する(1)

ユーザが選択したファイルのパスを取得する Application.FileDialogオブジェクトを使います。 FileDialogオブジェクトとは おなじみ、Office デベロッパー センターのFileDialog Objectの項には、 Remarks Use the FileDialog property to return a FileDial…

標準モジュールのPropertyとは

標準モジュールのPropertyとは 標準モジュールにもPropertyを生やすことができる。 では、標準モジュールのPropertyとFunctionは何が違うのだろうか。 Fucntionならば、同名のPublicなものが他のモジュールにない限りはメソッド名だけで呼び出せる。Property…

テスト用メソッドもPrivete指定にする

テスト用メソッドもPrivete指定にする Privete指定でもVBE上で実行できる これは、考えてみたら当り前なんだけれど、全然気づいていなかった。 イミディエイト・ウインドウ上での実行 次のようなメソッド群を用意する。 リスト1 標準モジュール Private Sub…

コマンドボタンから呼び出すメソッドはPrivete指定で良い

Priveteメソッドでもコマンドボタンから呼び出すことができる 常識ですか? 私は存じ上げませんでしたので、今まで何でもかんでもPublic指定にしていた。 そのせいで、「マクロの登録」ウインドウなんかを開くと、 こんなひどい有様にw Privete指定のメソッ…

炎上wしたコメント欄への対応

炎上wしたコメント欄への対応 ※この画像はフランスジョークですw 大量のExcelブックと戦う業務があって、そのときに必要なシートの名前を勝手に変える人がちょこちょこいたせいで難儀したので、間に合わせでシート名が改変されたブックを検知するメソッド…

ErrObjectクラスはインスタンス化できない?

ErrObjectクラスはインスタンス化できない? よく、「Errオブジェクト」という言葉を目にする。 エラー処理に便利なのでよく使うのも事実。 今朝、不意に「オブジェクト? じゃあ、インスタンス化できるのか?」と思った。 やってみた テキトーにプロシージ…