VBA覚書

Friendスコープの謎

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

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

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

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

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

VBAでwavを鳴らしたら珍現象が起きた話

VBAでwavを鳴らしたらち~んw珍現象が起きた 解決方法を知っている人がいたら、教えろ教えてください。 KitchenTimerクラス 前に、 akashi-keirin.hatenablog.com こういうものを作ったら、職場で割とウケたので、「残り時間を表示するカウントダウンタイマ…

ユーザが選択したファイル名を取得する(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…

FileSystemObjectによるファイル取り出しの順序

FileSystemObjectによるファイル取り出しの順序 おなじみ、OFFICE TANAKAのコチラのページによると、「Dir関数が返すファイルの順番」は、 ディスクのフォーマットによって異なります。最近主流のNTFSでフォーマットされているディスクでは、ファイルが保存…

引数二つのProperty

引数二つのProperty 前回 akashi-keirin.hatenablog.com 作成したCaptionBoxクラス。 テキストボックスの塗りつぶし色と透過性という基本的なセッティングをするのに、たとえば With captBox.Fill .ForeColor.RGB = vbBlack .Transparency = 0.4 End With と…

目障りなエラーチェックマークを除去する

目障りなエラーチェックマークを除去する 状況 セルに数字を文字列で書き込んだ場合、 このように実に目障りなことになる。 セルの左隅の緑色のスピードくじを一掃したい。 スピードくじを一掃するメソッド おなじみMicrosoft DocsのRange.Errors propertyの…

Enumの謎挙動

Enumの謎挙動 前々から気になっていたこと。 小ネタです。 誤入力防止のための記法 変数名などの誤入力に気づきやすくするために、パスカル記法やキャメル記法を使っている人はかなり多いと思う。 VBAの場合、変数名を、たとえばtooYoungToDieと宣言しておけ…

Enumの名前の重なり

Enumの名前の重なり VBAでEnumを使い始めの頃、その当時はPublicとPrivateの使い分けがいい加減だったこともあり、ずいぶん名前の重なりに苦労した。 そこで、最近は列挙体名、要素名それぞれにシンプルなルールに基づいて接頭辞を付け、極力重複が発生しな…

Len関数の返り値

Len関数の返り値 Len関数に文字列ではなく数値を渡してしまい、意図しない値が返っていたために小ハマりしてしまったので、反省も込めて覚え書き的に記しておく。 Len関数に数値を渡すとどうなるか たとえば、次のようなコードの場合。 Dim hoge As Long hog…

Worksheet.PageSetup.FitToPagesTall/Wideの設定はリアルタイムで反映されない

[Worksheet].PageSetup.FitToPagesTall/Wideの設定はリアルタイムで反映されない 知ってました? 私はこのことに気づかなかったせいで、お盆の期間だというのにドハマりして残業してしまいました。 状況 次のようなシートがあるとする。 四隅のち~んwを一…

FileSystemObjectを用いてテキストファイルを読み込む

FileSystemObjectを用いてテキストファイルを読み込む 〈FileSystemObject使い宣言〉をしていた(いつ?!)にもかかわらず、 akashi-keirin.hatenablog.com このときは、テキストファイルの読み込みにFileSystemObjectを利用していなかった。 深く反省して…

ドラッグで文字列を選択したかのような操作(Word)

文字列をドラッグして選択する操作(Word) akashi-keirin.hatenablog.com このとき、 選択範囲を文字数単位で拡張するメソッドとか、ないものか。(←調べろ。) などと、テキトーなことをぶっこいていたが、 あった。 やはり、ものごとというものは、ちゃんと…

2次元配列の値をRangeオブジェクトに突っ込むときの配列はVariantでなくても良い(Excel)

2次元配列の値をRangeオブジェクトに突っ込むときの配列はVariantでなくても良い 初歩的過ぎますか? 2次元配列の値を一気にRangeオブジェクトに書き込む処理は、Variant型の変数を使う例が多かったので、全然気づいていませんでした。 実験 シートモジュ…

Switch関数はRangeオブジェクトを返すのか

Switch関数はRangeオブジェクトを返すか 前回 akashi-keirin.hatenablog.com 初めてその存在を知ったSwitch関数。 こいつは、たとえばRangeオブジェクトを返したりすることはできるのだろうか。 やってみた。 準備 Sheet1オブジェクトに次のようなPropertyを…

Switch関数というものがある

Switch関数というものがある 知ってました? 私は全然知らなかった。 何気なく『Programming Excel with VBA and .NET』という本を読んでいたら、59ページに、 Sub GetResponse() ' Declare variable as an enumerated value' Dim res As VbMsgBoxResult ' G…

Staticプロシージャというものがある

Staticプロシージャというものがある 知ってました? 私は全然知らなかった。 何気なく『Programming Excel with VBA and .NET』という本を読んでいたら、58ページに、 Private Static Sub Proc3() ' In Static Procedures, all local variables are Static.…

アクセス修飾子「Friend」とは?

アクセス修飾子「Friend」とは? 勘違いから、マヌケな記事を書いてしまった。 訂正記事を書くのがめんどくさいので(←コラ!)、バッサリ削除して書き直す。 アクセス修飾子「Friend」は、入門書の類にはまず出てこない。 名前が「Friend」なのに、友達がい…

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

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

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

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

Rahmenクラスの修正

Rahmenクラスの修正 前回 akashi-keirin.hatenablog.com のRahmenクラスを修正した。 生まれ変わったRahmenクラス クラスモジュール Rahmen Option Explicit '///Attribute VB_PredeclaredId = True///' Public Enum NoodleSolidity nsYugeTooshi nsKonaOtos…

クラス変数っぽいものを実現してみる

クラス変数っぽいものを実現してみる Attribute VB_PredeclaredIdをTrueにしたクラスモジュールでちょっと実験をしてみた。 実験用クラス 実験用に、Rahmenクラスを作成。 infoment.hatenablog.com こちらの記事にインスパイヤされたでござる。 クラスモジュ…

自身のインスタンスを返すクラス

自分自身のインスタンスを返すクラス Attribute VB_PredeclaredId = False のとき クラスモジュールをデフォルトで使うときは、 Attribute VB_PredeclaredId = False である。 このとき、クラスのメソッドやプロパティは、インスタンス化した後でないと利用…

表の位置を右にずらす(Word)

表の横位置を変更する ドキュメント内の表の横位置を変える方法が判明したので、メモ代わりに記しておく。 RowsオブジェクトのLeftIndentプロパティを使う 表の位置なので、Tableオブジェクトのプロパティを触ればよいと思っていたが、違った。 左端にある表…

拡張子のないファイル

拡張子のないファイル 前回の akashi-keirin.hatenablog.com に、ことりちゅん (id:Kotori-ChunChun) 氏からコメントをいただいた。 曰く、 実用上困ることは滅多にないですが、拡張子のないファイルも存在するので、自作された方は要注意です。 と。 なるほ…

ファイルの拡張子を取得する

ファイルの拡張子を取得する 車輪の再発明 ファイル名の拡張子を取得したくて、次のようなコードを書いた。 ちなみに、マクロを書いたブックのあるフォルダ内のTargetFilesフォルダ内に、次のようにファイルがあるものとする。 リスト1 標準モジュール Publ…