Custom Event 入門

Custom Eventに挑戦 存在は知っていたけど、実はやったことなかった。 『VBA Developer's Handbook Second Edition』の説明が実にわかりやすかったので、ちょっとやってみようと思った。 まあ、単なる覚書です。 手順 今回は、三つのクラスモジュールを用い…

キーワードをカッコで括るマクロ(Word)

キーワードをカッコで括るマクロ Wordドキュメントの中に出てくるキーワードをカッコで括るマクロ。 キーワードの部分を取得する まずは、キーワードの部分を取得しなければならない。Rangeオブジェクトとして取得すれば、あとは[Range].Textプロパティを書…

Wordドキュメント上で指定した段落以外の段落を折り畳む

Wordドキュメント上で指定した段落以外の段落を折り畳む 段落を折り畳むことができる 知らなかった。 Wordの標準機能にあった。 百聞は一見に如かず。次をご覧いただきたい。 「百聞は一見に如かず」と偉そうに言った割にはわかりにくい画像ですまないw 見…

自作クラスのオブジェクト型デフォルトメンバ……???

自作クラスのオブジェクト型デフォルトメンバ……??? ちょっと衝撃的な実行結果が出たので報告。 自作クラスにデフォルトメンバを設定する これは、『VBA Developer's Handbook Second Edition』に載っていたテクニック。 VBA界隈では有名な id:t-hom さん…

選択部分のフィールドコードだけを表示させる(Word)

選択範囲のフィールドコードを表示させる キーボード上での[Shift] + [ F9 ](半角モード)をVBAで実現する方法。 これまで、[Window].[View].ShowFieldCodesプロパティのオンオフ(True/False)切り替えしか知らなかった。 ちょこちょこっと調べてみたら、…

Range.PhoneticGuideメソッドを使いやすくする(Word)

[Range].PhoneticGuideメソッドを使いやすくする [Range].PhoneticGuideメソッドはちょい使いにくいので、使いやすく改良。 改良したコード [Range].PhoneticGuideメソッドは、何といっても引数Raiseが超絶わかりにくい。ゆえに、[Range].PhoneticGuideメソ…

安心の実行結果(Word)

安心の実行結果 先日、 akashi-keirin.hatenablog.com このような、衝撃的な実行結果についてお伝えした。 今回は、安心の実行結果である。 フォントサイズは0.5の倍数のみ? 今まであまり気にしたことはなかったのだが、ルビのフィールドコードをいじくって…

ルビが施された部分のフォント情報を取得する(Word)

ルビが設定された部分のフォント情報を取得する 選択箇所のフォント情報を取得するときには、Selection.Fontオブジェクトにアクセスすればよい。たとえば、 Selection.Font.Name とすれば、カーソル位置のフォント名が取得できる。 ……はずだ。 ルビが設定さ…

衝撃の実行結果(Word)

衝撃の実行結果 最近、WordのVBAでのルビ操作にハマっている。 [Range].PhoneticGuideメソッドでルビを振るのだが、あまり細かい調整ができず、さりとてルビを振った後Field.Code.Textプロパティの値をVBAで書き換えると、 ドキュメントを開きなおしたときに…

マクロでルビ振りをするときの注意(Word)

マクロでルビ振りをするときの注意(Word) Word VBA のバグを発見したので、ここで盛大に晒しますw [Range].PhoneticGuideメソッドでルビを振る まず、次のようなドキュメント(笑)を用意する。 選択部分を見たらわかるように、フォントは「MS 明朝」。 …

Selection.MoveRightメソッド(Word)の挙動に注意

[Selection].MoveRightメソッドの挙動に注意 [Selection].MoveRightメソッド([Selection].MoveLeftメソッド)を使用していて軽くハマったので、記しておく。 [Selection].MoveRightメソッド [Selection].MoveRightメソッドというのは、Wordでドキュメント…

ハイライト部分を切り替えるマクロ(Word)

ハイライト部分を切り替えるマクロ コードだけ掲載しておく。 クラスモジュールと標準モジュールを使った。 ハイライト部分を保持するクラス ハイライト部分を保持し、ハイライト部分の再取得、ハイライトのオンオフ切り替えができるようなオブジェクト。 ク…

ズンドコ節で遊ぶ

ズンドコ節で遊ぶ ノンプロ研のSlackのチャンネルに「今週のお題」というやつがある。毎週一つ、ちょっとした「お題」(〈数字をローマ数字に変換する関数を作れ〉とかそういうやつ)がランダムに出される。 今回、 「ズン」と「ドコ」をランダムで出力し、…

Find.Executeメソッドのハマりを回避する(Word)

Find.Executeメソッドのハマりを回避する(Word) 前回 akashi-keirin.hatenablog.com お知らせしたように、Selection.Collapseメソッドが(仕方がないにせよ)カーソルが末尾にあるときに悲しい挙動をしてしまうせいで、Find.ExecuteメソッドをDo ~ Loopで回…

Selection.Collapseメソッドの挙動に注意(Word)

Selection.Collapseメソッドの挙動に注意 前回 akashi-keirin.hatenablog.com 紹介した、次のハイライト箇所を取得するgetNextHighLightメソッド。 検索箇所を取得した後、Selection.Collapseメソッドを用いて、選択箇所を後方に向けて潰すようにしている。 …

文書中のハイライトされた箇所を取得するFunction(Word)

文書中のハイライトされた箇所を取得するFunction 文書中のハイライトされた箇所を取得するFunctionについては、かつて akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com このような形で取り上げたことがあった。 しかし、ハイライト箇所を文書本…

テキストボックスの先頭にカーソルを置く(Word)

テキストボックスの先頭にカーソルを置く これ、みなさんどうやって実現しているのでしょう? テキストボックス内の文字列を取得する テキストボックスはShapeオブジェクトの一種。 んで、その配下にTextFrameオブジェクトがあり、そのTextRangeプロパティを…

本当に変化したときだけChangeイベントを起こす(Excel)

本当に値が変更されたときだけChangeイベントを起こす 標題はちょっと嘘。 結果的に値が変わったときだけ処理をする、というもの。 作戦 次のような作戦を考えた。 複数セルの値が変更された場合の処理は、現状力不足ゆえ諦めている。 複数セルの値が変更さ…

配列もCollectionも使わないデータ構造(Queue)

配列もCollectionも使わないデータ構造(Queue) 前回、前々回 akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com のStackに続いて、Queueも作った。 コードを簡単にするために、今回もString型データ専門。 値なら何でもオッケーにしたければ、Va…

クラスモジュールを用いたStackの改良

クラスモジュールを用いたStackの改良 前回 akashi-keirin.hatenablog.com の続き。 ちょっと改良した。 クラス名の見直し StringStackオブジェクトの各要素がStackStringというのは、余りにもわかりにくすぎるので、StringStackItemに改めた。少し長くなる…

配列もCollectionも使わないデータ構造(Stack)

配列もCollectionも使わないデータ構造 久しぶりに 『VBA Developer's Handbook』を読んだ。 「Chapter 6」の「Creating Dynamic Data Structures Using Class Modules」のところに、実に面白いことが書いてあったので、やってみた。 Stackを二つのクラスモ…

文字列型の列挙体?

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

UTF-8のテキストファイルを操作するクラス

UTF-8のテキストファイルを操作するクラス 作った。 何のために? foobar2000のプレイリストファイルのドライブレター部分を一括して書き換えるために。 決して仕事のためではない。 だから、全然「働き方改革」とは関係ない。許せ。 UTF8TextFileクラスのコ…

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

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

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

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

PropertyとSetter/Getter

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

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

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

インターフェースを実装したインターフェースを実装する

インターフェースを実装したインターフェースを実装する 何言ってんだか、わかんねえだろ? おれもよくわかっていねえんだ。 インターフェースを実装したインターフェース まず、一つインターフェースを作る。 リスト1 クラスモジュール IA Option Explicit…

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

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

Friendスコープの謎

Friendスコープの謎 クラスモジュールなどのオブジェクトモジュールでは、プロパティやメソッドのアクセス修飾子としてFriendを使うことができる。 ごく一部の人の間で有名な事実である。(ごく一部の人の間で有名であることを「有名」と言うのかどうかは知…