飛び地状態のセル範囲にも名前を付けることができる(Excel)

飛び地状態のセル範囲にも名前を付けることができる Excel使いこなしマンには常識だったのかも知れないが、便利だなと思ったので記しておく。 飛び地状態のセル範囲に名前を付けてみる まず、 こんな風に、投げやりに文字列を入れておく。 別に入れなくても…

整数以外の列挙体っぽいものは実現可能なのか

定数的なクラスを列挙体っぽく使う 前回、 akashi-keirin.hatenablog.com クラスモジュールとPropertyを用いて、列挙体的な整数以外の定数が作れるのではないか、と述べたが、かなり浅はかな考えだったようだ。 列挙体の何が便利といって、たとえば、 Public…

整数以外の列挙体っぽい定数を実現する

整数型以外の列挙体ぽいものを実現する 題名が分かりにくくてすまない。 最近、VBA Deveroper's Handbookにハマっている。 んで、その中で面白そうなアイディアを発見したので、ちょっと実験してみた。 今出先で、『VBA Deveroper's Handbook』が手元にない…

配列の要素を入れ換えるFunction

配列の要素を入れ換えるFunction 配列の要素を入れ換えるFunctionを作ってみた。 仕様 とりあえず、引数として当該の配列、入れ換え対象のインデックス番号二つを受け取り、入れ換え済みの配列を返すようにする。今回は、Long型の配列に対応する。 コーディ…

Object型変数を積極的に使う

Object型変数を積極的に使う 今まで、Object型の変数を積極的に使うことはなかった。 VBAで作成したツール類も、内輪で使うものばかりなので、CreateObjectを自分から使うことはまずなかった。参照設定してNewばっかりだった。 今回、Object型変数を使ったら…

RangeオブジェクトのNameプロパティのち~んw現象(Excel)

RangeオブジェクトのNameプロパティに関するち~んw珍現象 とにかくご覧いただきたい。 ち~んw珍現象 A1セルに「ち~んw」と入力 まず、このようにA1セルに「ち~んw」と入力しておく。 イミディエイト・ウインドウで名前を定義 イミディエイト・ウイン…

選択範囲のルビを除去する(Word)

選択範囲のルビを除去する 青空文庫(HTML版)からWordに文章をコピペすると、 こんなふうに、むやみやたらとデカいルビが設定されていて、レイアウトがめちゃくちゃになる。 ルビのサイズを小さくすることも考えたが、ひとまず選択範囲のルビを除去する方向…

「写経」用教材を作成する(Word)

「写経」用教材(?)を作成する Wordの「原稿用紙設定」機能 『一太郎』では、「文書スタイル呼び出し」(?)という機能で、コクヨ社の原稿用紙の書式を呼び出すことができる。んで、印刷するときに「升目を印刷する」というチェックボックスにチェックを…

Sentencesコレクションの要素の一番最初の「文字」が何文字目かを調べるFunction(Word)

Sentencesコレクションの要素の一番最初の「文字」が何文字目かを調べるFunction 分かりにくいタイトルですまぬ。 文の最初の文字の位置を調べたい。たとえば、 「……『ち~んw』とか言うな!」と言った。 みたいなときに、最初の文字「ち」の位置が知りたい…

記号は黒字、文字は白字にするマクロ

記号を黒字、文字を白字にする 前回 akashi-keirin.hatenablog.com を用いて、記号は黒字に、文字は白字にするメソッドを作った。 コード コードは次の通り。 リスト1 標準モジュール Private Sub changeFontColor(ByVal targetFont As Font) '……(1)' If is…

文章の中で使われる記号かどうかを判定するFunction(Word)

文章の中で使われる記号かどうかを判定するFunction ちょっとやってみたいことがあって、標題のようなFunctionを作ってみようと思い立った。 以前、 akashi-keirin.hatenablog.com 文字が漢字かどうかを判定するFunctionを作ったときは、ある意味非常に簡単…

全角ダブルクォーテーションの取り扱いはめんどくさい

全角のダブルクォーテーション 全角のダブルクォーテーションを文字列として扱うのに苦労したので、覚書的に記しておく。 普通に文字列として書いてみる 次のように書いてみる。 str = "“" この状態で、[Enter]をふわっと押してみる。すると、 おわかりだろ…

SentencesコレクションとCharactersコレクション(Word)

SentencesコレクションとCharactersコレクション SentencesコレクションとCharactersコレクションって、ちょっと変わっているよな、というだけの話。 Sentencesコレクションの要素はSentenceオブジェクトに非ず たとえば、コード・ウインドウ上で、 Dim targ…

インターフェイスに汚染されたWorksheetオブジェクトの末路

インターフェイスに汚染されたWorksheetオブジェクトの末路 前回 akashi-keirin.hatenablog.com インターフェイスを実装したせいでおかしくなってしまったWorksheetオブジェクトから、インターフェイスを取り外したらどうなるのか。 一枚の画像に語らせたい…

シートモジュールにインターフェイスを実装するのはやめた方がいい

シートモジュールへのインターフェイスの実装はやめた方がいいかも知れない 以前、 akashi-keirin.hatenablog.com で、シートモジュールにもインターフェイスを実装することができる、ということを示した。 んで、そのときに使ったブックを今日久しぶりに開…

ThisWorkbookモジュールの謎

ThisWorkbookモジュールの謎 タイトルはちょっと大げさです。 しかも、謎を解き明かす気などさらさらなく、豪快に投げっぱなしジャーマンです。 ThisWorkbookモジュールを改名する プロジェクト エクスプローラーで、ThisWorkbookモジュールを選択し、プロパ…

ThisWorkbookとは何者なのか

ThisWorkbookとは何者なのか 案外、初歩的なことがわかっていない、ということを痛感したので、後の戒めのためにも残しておくことにした。 「ThisWorkbook」を使うことは非常に多い。VBAの場合、コードが書かれてあるブックが他のブックを操作する場面という…

プリンタ名を返すProperty

プリンタ名を取得するProperty 前回 akashi-keirin.hatenablog.com の続き。 前回までに作成したInstalledPrinterクラスにPropertyを追加する。 追加するPropertyは、printerName(ByVal printerIndex As Long)とし、引数にインデックスを渡したら、該当する…

ポート名(?)付きのプリンタ名を返すFunction

ポート名(?)付きのプリンタ名を返すFunction 前回、 akashi-keirin.hatenablog.com 前々回 akashi-keirin.hatenablog.com の集大成。 コード プリンタの名前を渡したら、ポート名(?)付きのプリンタ名を返すFunctionを作ってみた。 前回同様、オブジェ…

プリンタの数を返すFunction

プリンタの数を調べるFunction Application.ActivePrinterにプリンタ名をセットしたくても、プリンタ名の後ろにくっついている「on NeXX:」の部分がわからないとセットできない。 同じプリンタに接続していても、端末ごとに「NeXX:」の部分が異なるので困る…

プリンタが存在するかどうかを判定するFunction

プリンタが存在するかを調べるFunction 軽量PDFを作成するためには、ExportAsFixedFormatメソッドを用いていたのでは限界があるので、 akashi-keirin.hatenablog.com このときのように、プリンタにJUST PDFなどの、PDF出力用プリンタを選択する。 その場合、…

「フォームコントロールのボタンオブジェクトのEnabledプロパティって、意味ないんじゃね?」問題

「フォームコントロールのボタンオブジェクトのEnabledプロパティって、意味ないんじゃね?」問題 前回 akashi-keirin.hatenablog.com の続き。 ボタンのEnabledプロパティをFalseにしてみる イミディエイト・ウインドウに activesheet.buttons(1).enabled =…

フォームコントロールのボタンオブジェクトをVBAで捕まえる

フォームコントロールのボタンを捕まえる マクロを呼び出すためのボタンをシート上に設置することがよくある。 シート上に設置したボタンをVBAで取得するにはどうすればよいのだろうか。 Nameプロパティを取得してみる ボタンの上で右クリックすると、 この…

クラスのPrivateメソッドもイミディエイトで実行できる

クラスのPrivateメソッドもイミディエイトで実行できる 再び超小ネタ。 クラスモジュールの準備 クラスモジュールを作る。 リスト1 クラスモジュール 'オブジェクト名は"HiddenBooks"' Private Function isHiddenBook( _ ByVal targetBook As Workbook) As …

個人用マクロブックはアドインに非ず

個人用マクロブックはアドインに非ず 「当り前だろバカ!」と思ったらスルー推奨。 IsAddinプロパティ イミディエイト・ウインドウに ?Workbooks("PERSONAL.XLSB").IsAddin と打ち込んで[Enter]をポチッ。すると、 Falseが返るのであった。 Windows.Countプ…

非表示ブックの数を返すFunction(Excel)

非表示Bookの数を返すFunction アドインとか、個人用マクロブックみたいな、ブックを開いたら裏で勝手に開いているブックの数と、オモテで正々堂々と開いているブックの数を別々に取得する必要があったので作ってみた。 考えかた Application.Workbooksコレ…

Split関数の裏技

Split関数の裏技 このとき、 akashi-keirin.hatenablog.com thom (id:t-hom) さんに教えてもらった。 Split関数の第2引数は省略できる 完全に思い込みで必須だと思っていた。 なるほど、Office VBA Reference の Split Function の項によると、 Syntax Spli…

セル範囲が格子状になっているか判定するFunction(Excel)

セル範囲が格子状になっているか判定するFunction いわゆる「Excel方眼紙」との戦いの一環。 セル結合とかガンガンズンズングイグイかまして作った表が、格子状になっているか判定する必要に迫られたのだった。 かつて誰かが作ったツールに不具合があって、…

[Range].MergeAreaプロパティの返り値の謎(Excel)

[Range].MergeAreaプロパティの返り値の謎 単にRangeオブジェクトのことがよく分かっていないだけかも知れないが、恥を承知で書く。 MergeAreaプロパティの返り値 こんなシートがあったとする。 J1セルとJ2セルが結合されている。 したがって、J1セル…

ファイル名に接頭辞・接尾辞を附加するFunction

ファイル名に接頭辞・接尾辞を附加するFunction ファイル名変換ツールを自作したときに、ついでに作った。 ファイル名に接頭辞を付けるFunction これは簡単。単純に先頭に文字列を追加するだけ。 リスト1 標準モジュール Public Function getPrefixedFileNa…