VBA覚書

オートフィルターとClearContentsメソッド

フィルターをかけているときのRange.ClearContentsメソッドの挙動 ちょっとビックリしたので、記しておく。 フィルターで非表示の列が含まれているRangeオブジェクトにClearContentsメソッドを実行する こんな表があったとする。E列には全て値が入っている。…

レジストリを使う(2)

レジストリを削除する 今回は、前回の akashi-keirin.hatenablog.com のマクロに、レジストリ削除機能を付加する。 レジストリの削除 『VBAエキスパート 公式テキスト ExcelVBAスタンダード』の206ページによると、 レジストリのデータを削除するには、Delet…

レジストリを使う

レジストリに値を保存する 今回は、前回の akashi-keirin.hatenablog.com のisDisplayableプロパティを、レジストリで管理するように変更する。 レジストリへの値の書き込み 『VBAエキスパート 公式テキスト ExcelVBAスタンダード』の203ページによると、 レ…

次回からは表示しない(ユーザーフォーム)[Excel](5)

次回からは表示しない まさかの第5弾!!!!!!!! 四天王からのアドヴァイス (私が勝手に認定している)VBA四天王の一人、 id:imihito さんから、前回の akashi-keirin.hatenablog.com にコメントをいただいた。 曰く、 もとい、 `myDocProp` という名前の`Fun…

次回からは表示しない(ユーザーフォーム)[Excel](4)

次回からは表示しない さらにシンプルなコードにする 「もうええっちゅうねん!!!!!!!!」という声が聞こえてきそうだが、もう一本だけ。 前回 akashi-keirin.hatenablog.com かなりシンプルになったコードだが、 ThisWorkbook.CustomDocumentProperties.Item(…

次回からは表示しない(ユーザーフォーム)[Excel](3)

結局…… WorkbookオブジェクトのCustomDocumentPropertiesコレクションを使うんだから、もはやPublic変数は必要なかった、という話。 akashi-keirin.hatenablog.com 今回使用するユーザーフォームについては、コチラの記事をどうぞ。 コードの修正 前回 akash…

次回からは表示しない(ユーザーフォーム)[Excel](2)

変数の値を保存する WorkbookオブジェクトのCustomDocumentPropertiesコレクションを使う 前回 akashi-keirin.hatenablog.com の続き。 変数の値を保存するには、 シートに書き込む テキストファイルに書き込む レジストリに書き込む ぐらいしか方法がないと…

素人、Collectionクラスに入門す

Collectionクラスの使い方の勉強 人のコードを解読する (私が勝手に認定した)VBA四天王の1人(あと3人って誰だよw)thom (id:t-hom) さんが コチラの記事でお書きになっているコード を徹底解剖(笑)する。 参考コード 参考リスト1 Function GetRooms…

配列関係の覚書(3)

配列関係の覚書 表を一旦配列にぶち込む まことに今さらながらで恐縮だが、 表のデータを利用するなら先に配列にぶち込むと激速 ということを知った。 っていうか、いろんなところで目にはしていたんだけれども、重要性を認識していなかった、ないしは端的に…

STARTUPフォルダの中に置くのはショートカットでいい[Word]

STARTUPフォルダに置いておくのはショートカットでいい STARTUPフォルダに置くマクロ入りテンプレート しょっちゅう使うマクロをアドインにする、というワザを割と最近覚えたんだけれど、 akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com Wordの…

VBAでグラフをいじくる

VBAでグラフを操る Excelグラフのオブジェクトモデルを探る 次のような表からグラフを作成し、いろいろいじくり回してみた。 これが元のグラフ。それぞれの選手の連対時決まり手を元に積み上げ横棒グラフを作ってみた。 んで、次のコードでこのグラフを加工…

プロシージャを別プロシージャの引数にする?

プロシージャ名を引数にして別プロシージャに渡す??? Application.Runメソッド プロシージャの実行時間を計測するFunctionを作りたいなーと思って調べてみたら、 Application.Runメソッド というものを使えばよいと分かったので、やってみた。 GetTickCou…

FreeFile関数というものがある

FreeFile関数というものがある FreeFile関数 前回の akashi-keirin.hatenablog.com をうpしたところ、即座に2件のツッコミが入った。 じゃなくって、 きなこ(id:kinacco)さん曰く FreeFile関数がありますよ(^^) また、ExcelVBAer (id:x1xy2xyz3)さん曰く F…

VBAからテキストファイルを開くときのファイル番号は変数でもよい

Openステートメントのファイル番号には変数も使える テキストファイルOpen時のファイル番号に変数を使う たとえば、 Open fileFullName For Input As #1 の「1」の部分を変数で指定できるのか、やってみた。 まず、 Open fileFullName For Input As # & n と…

「"」(ダブルクォーテーション)のエスケープ

「"」(ダブルクォーテーション)のエスケープ 恥ずかしい告白 まことに今さらながら、実は、 「"」(ダブルクォーテーション)のエスケープについて、ちゃんと理解していなかったのである! では、どうしていたのかというと、 そのときどきでテキトーに書い…

モジュール名と同名のプロシージャ

「モジュール」とは何なのか? 「Module1」プロシージャ問題 つらつらとTwitterを眺めていると、フォローしている方が モジュール名とプロシージャ名を同じにしてCallで呼ぼうとするとエラーが出ます。 (中略) 「モジュールではなく、変数またはプロシージャ…

WshScriptのSendKeysメソッドを使う

ち~んw珍現象は続く WshScriptのSendKeysメソッド 前回の akashi-keirin.hatenablog.com コチラの記事にid:imihito さんからコメントをいただいた。 そこでご紹介いただいたのは、コチラの方法。このうち、「WshShellのSendKeysをラップする」というやつを…

Application.SendKeysメソッドの不具合への素人的対応

ち~んw珍現象を解決する SendKeysメソッドで勝手に[Num Lock]キーが押されたみたいになる現象への対応 前回、 akashi-keirin.hatenablog.com コチラで、SendKeysメソッドを実行すると、なぜか[Num Lock]が切り替わってしまうという珍現象をご紹介した。 コ…

VBAのち~んw現象

ち~んw珍現象あれこれ 右クリックメニューが逃げる問題 前回の akashi-keirin.hatenablog.com でご紹介した珍現象。TextBoxコントロールのMouseDownイベントを用いて、ショートカットキー押下と同じ現象を引き起こすプロシージャを呼び出しているのに、な…

揮発性関数(Application.Volatileメソッド)

揮発性関数??? Application.Volatileメソッド 前回の akashi-keirin.hatenablog.com に、id:imihito さんからコメントをいただいた。 曰く、「きっと うまく いくでしょう」 `Excel.Application.Volatile`メソッドを使えば、その関数を揮発性関数にできた…

強引にセルを再計算させる

セルの再計算が通用しない場面に対応する 自作ワークシート関数 めちゃくちゃ条件分岐の多い、死ぬほどダルい表を作る必要があった。別に私の仕事でも何でもないんだけれど、泣きついて来られて仕方なく……。 自分の仕事でも何でもないから、仕事中にやるわけ…

連想配列(Scripting.Dictionaryオブジェクト)というものを使ってみた

初めての連想配列 「連想配列」とか、「Dictionary」という言葉は見たことがあったけれど、使ったこともなく、詳しく知ることもなかった。 自作クラスのエラーメッセージを管理するのがメンドクサイなーと思って、「そういえば……」とちょっと調べてみると、…

がんばれ! isKanjiメソッドくん!!!!!!!!

文字列から漢字のみ抽出する isKanjiメソッドを強引に使う 前回 akashi-keirin.hatenablog.com 作成したisKanjiメソッドの使いどころを無理矢理発明した。 準備 まず、 こんな風にシートを作っておいて、A1セルに「TextCell」、C2セルに「BaseCell」と名…

Officeのヴァージョンによって処理を切り替える

Officeのヴァージョンに合わせて煽る 私は、別に玄人でも何でもないので、自作のツールに煽りAAを入れる。 中でも気に入っているのが、有名な「ち~んw」のやつw _________ / \ / /・\ /・\ \ |  ̄ ̄  ̄ | ち~んw | (_人_) | | \ |…

差込データソースとの接続をVBAで行う

VBAで差込印刷のデータソースに接続する 差込印刷データソースの指定 以前、差込印刷のレコードごとにWordファイルを生成するということをやったことがあった。 akashi-keirin.hatenablog.com これはこれで、メチャクチャ便利で、重宝しているんだが、フォル…

VBAでテキストボックスのレイアウト設定を操作する

ことごとく「背面」になっているテキストボックスェ…… 業務で引き継いだWordドキュメントがカオス…… 業務でWordドキュメントを引き継いだ。 で、そのWordドキュメントってのがひどいやつで、 40個ぐらい配置されているテキストボックスのレイアウトがことご…

Join関数について

Join関数というものがある Join関数 前回の記事 akashi-keirin.hatenablog.com に、 id:imihito さんからコメントをいただいた。曰く、 argsByArray 相当処理として、組み込み関数にJoin 関数というものが有ったりします ```vba Join(strArray, "! ") ``` …

配列を引数にすることはできるのか

配列を引数にすることはできるのか 配列を引数にしてみる プロシージャの引数に配列を指定することはできるのだろうか、と思ってやってみた。 とりあえず、 Public Function argsByArray(ByVal ar() As String) As String としてみたら、 こんなふうにいきな…

Windowsのシャットダウン日時を取得する

Windowsのシャットダウン時刻を取得する Windwosのイベントログを取得するには? Excel VBA質問箱 IV【74506】Re:VBAシャットダウン時刻取得にて、次のコードを発見した。 リスト1 標準モジュール Public Sub test() '……(1)' Call EnumShutdownDateTime(Ran…

タブ幅やタブ位置をVBAから設定する

VBAからタブを設定する 既定のタブ幅をVBAで操る タブ幅の設定って、結構めんどくさいなあと思っていた。んで、何とかVBAで操作できないものか、とちょっとggってみたんだが、これというものが見つからず(調べ方が悪いだけだと思うけど)、ちょいとマクロ記…