Quantcast
Channel: t-hom’s diary
Browsing all 493 articles
Browse latest View live

Image may be NSFW.
Clik here to view.

VBA 部屋割りマクロ(ネタをいただきました)

いつも読んでるid:akashi_keirinさんのサイトに食指が動くネタがあったので乗っかってみようと思います。akashi-keirin.hatenablog.comTwitterで本人にコンタクトして快諾いただきました。さて、まずは同じように部屋の表を用意。そして、部屋をコレクションとして取得する関数を作成。この関数は部屋データの表範囲(今回ならA2:B7)を引き渡して、部屋が入ったコレクショ...

View Article


プログラミング用語はなぜ小難しいのか

プログラミングでは識別子・キーワード・文字列・演算子・リテラルといった小難しい言葉が登場する。意味は調べれば分かるが、なんでわざわざそんな小難しい言葉を使うんだろうか。演算子は、計算記号って呼んじゃだめ?文字列は、単語って呼んじゃだめ?識別子は、名前って呼んじゃだめ?リテラルは、値って呼んじゃだめ?とまぁ、目にするたびにモヤっとしつつもプログラミングしているうちになんとなく慣れてしまった方もいるので...

View Article


Image may be NSFW.
Clik here to view.

VBA入門記事 インデント徹底解説!

VBA初心者のコードを見ると、インデントが乱れていることが多い。中・上級者にとって、インデントはあまりに自明のことで、それゆえに詳しく解説されることがない。せいぜい入門書の最初の頃にちょろっと「きちんとインデントしましょう」と書かれる程度である。インデントが多少乱れていたとしても、プログラムの実行に影響はない。しかしインデントの乱れはコードの構造を把握しにくくさせてしまう。今回は初心者向けの記事とし...

View Article

Image may be NSFW.
Clik here to view.

VBScript ドラッグ&ドロップでファイルをAccessDBに登録する仕組み

PCのファイルは通常「フォルダ分け」によって整理される。ところがフォルダ―ツリーを使った整理は実際のところそんなにうまく機能しない。なぜなら、コウモリ問題が存在するから。コウモリ問題とは、物事を単一の基準で分類していくと両方の基準に合致した場合に詰む事象を言う。※イソップ寓話の「卑怯なコウモリ」が由来だとのこと。例えばプロジェクトAフォルダと、手順書フォルダが別の場所にあり、プロジェクトAに関する手...

View Article

Image may be NSFW.
Clik here to view.

プログラミング言語はコンピューター語ではなく人間のための言語

プログラミング言語とは何か。初心者に向けて、よく次のような説明がなされる。コンピューターは日本語や英語で指示しても理解できない。だからコンピューターが理解できる言葉、つまりプログラミング言語でコードを書く必要がある。プログラミングを学び始める段階ならこの説明で何の支障もない。と、以前までは思ってたんだけど最近は、初めからきちんと伝えておいたほうが良いんではないかという気がしてきたのでこの記事を書いた...

View Article


Image may be NSFW.
Clik here to view.

Excelのセキュリティ設定と怪しいファイルの対策

Excelには、悪意のあるマクロによってコンピューターが被害を受けることがないようにいくつかの防御機構が備わっている。しかしExcelマクロの解説書・解説サイト等では利便性の観点からか、設定を無効化しましょうという方向での解説が多く、セキュリティリスクについては「注意しましょう」という漠然とした勧告か「自己責任で」という免責のみで具体的に何をどう気を付ければ良いのかが書かれていないことが多い。今回は...

View Article

Image may be NSFW.
Clik here to view.

VBAの知識の依存関係の整理を試みる

※今回の記事は基本的に自分用の備忘録です。VBAの学習における知識の依存関係の整理を試みた。試みたというのは、お世辞にも成功したとは言えない為である。書籍でプログラミングを学ぶ際は、ふつう1ページずつ読み進めていく。これに対して、実際の知識体系は必ずしもシーケンシャルに整理できるわけではない。たとえばオブジェクトを正しく理解しようと思ったら、中身がどうなっているのか知る必要がある。つまりオブジェクト...

View Article

高品質なコードを短時間で編み出すには

プログラムのコーディングで一番時間を消費するのは「思考」と「試行錯誤」である。コーディングスピードが落ちることを嫌って極端に短い変数名をつけたり、一つのプロシージャで一気に書ききったりするとコードが把握しにくくなり、「思考」に時間をとられ、うまくいかない時の「試行錯誤」に時間をとられ、結果的に相当に時間をロスしてしまう。私が普段のコーディングで大層な変数名を付けたり、プロシージャを分割したり、クラス...

View Article


学習において、疑問を抱えたまま次のページをめくる勇気

何かを学んでいると、まだ説明されていない箇所に対して色々と疑問が湧いてくることがある。たしかに、分からないというモヤモヤした気分のまま次に進むのはなんとなく気持ち悪いものだ。一般的に学習において疑問を持ち、自主的に調べるのは良いこととされるけれど、最近思うのはひょっとすると一概にそうとも言えないんじゃないかということ。私がまずいと思うのは「分からない。嫌だ。」という疑問に対する不寛容さである。例えば...

View Article


プログラムコード中に値(あたい)は登場しない

VBAに限らず全てのプログラミング言語で言えることだが、コード中に値(あたい)が直接登場することは無い。最近、「値とは何か」ということを掘り下げて考えることがあり、ようやくこの結論に行きついた。たとえば、数字の「1」。これは一般的に値だと理解されるが、表面的には単なる文字にすぎない。「ひとつ」という概念を表した文字だ。「1」という値が現れるのは、その文字を見た人の頭の中である。値は確かに存在するが、...

View Article

Image may be NSFW.
Clik here to view.

Static変数を利用してステータスバーに文字をスクロールさせる。

今回はExcelのステータスバーに電光掲示板のように文字をスクロールさせるマクロを紹介。もともと作りたかった案件とは違うが、そちらが失敗して副産物として単体で何か使えそうな気がしたので簡単にメモ。矢印の方向に文字が流れる。コード※Mainプロシージャを起動すると無限ループになるので止め方をご存知の方のみ実行してください。#If VBA7 ThenPrivateDeclare PtrSafe Sub...

View Article

VBA Publicなプロシージャをマクロの実行メニューから隠す方法

ユーザーに実行させたくないマクロを「マクロの実行」メニューから隠す方法として最も簡便なのはプロシージャをPrivateにしてしまうことだ。しかしマクロがある程度大きくなると、複数のモジュールにプロシージャを分散させたい場合がある。他モジュールから呼び出すためには、Publicにする必要があるが、単にPublicにするとマクロの実行メニューにも見えてしまう。今回はこのジレンマを解消する方法を紹介する。...

View Article

Image may be NSFW.
Clik here to view.

VBA SubとFunctionとPropertyの使い分け

VBAには3種類のプロシージャがある。SubとFunctionとPropertyだ。しかしその守備範囲はキッチリ線引きされているわけではなく、使い分けに困る場面がある。今回はその使い分けのヒントとなる考え方を紹介する。なお、3種類と書いたがProperty...

View Article


Image may be NSFW.
Clik here to view.

VBA 税法条文のカッコ書き部分にオリジナルの書式を適用する。

TwitterでVBA検索してたら面白そうなネタがあったので乗っかり。税法のカッコ書きの部分にオリジナルの書式を適用するマクロが作りたい様子。ふむふむと思って調べてみた。十 同族会社...

View Article

VBA Excelのウィンドウを最前面に出してから、元の重ね順に戻す方法

今回はExcelのウィンドウを1秒ほど最前面に出してから、元の重ね順に戻すマクロを紹介。マクロというか、ほとんどAPI処理になってしまった。何がしたかったかというと、以前作成したスクリーンショット自動貼り付けマクロ(以下)において、貼り付けがうまくいったか確認するために一瞬Excelを最前面に表示させたかった。thom.hateblo.jpSetForegroundWindowを使えば楽勝だと思って...

View Article


Image may be NSFW.
Clik here to view.

VBA オートシェイプのグループを再帰的にグループ解除する。

今回は多重的にグループ化されたシェイプを全てグループ解除するマクロを紹介する。グループ化されたもの同士がさらにグループ化されていると、一度解除しても以下のようにまだ子グループが残る。もう一度解除するとようやくすべてのシェイプが分解される。これをマクロでやるには、プロシージャの再帰呼び出しを利用する。再帰とは、プロシージャ内で自分自身のプロシージャを呼び出すこと。メインの再帰部分はこちら。※単体では使...

View Article

Image may be NSFW.
Clik here to view.

VBA 重なっているシェイプをグループ化するマクロ

今回の記事は重なりあうシェイプを自動判定してグループ化するマクロ。といっても以前にクラスモジュールを使用してシェイプ同士が重なっているかどうかの判定までは作ってるので今回は手入れしてちゃんとグルーピング部分まで完成させたのでコードの紹介のみ。thom.hateblo.jpクラスモジュールクラスモジュールを挿入し、オブジェクト名をShapeWrapperとしておく。その名のとおり、Shapeを内包して...

View Article


Image may be NSFW.
Clik here to view.

VBA 変数宣言はIfやFor等のコードブロック中に書いても機能する

VBAでは、変数宣言をIfやFor等の制御構文の中に書くことができる。作法としてどうなのって話は一旦置いといて、とりあえず実証してみよう。以下のマクロは正常に実行できる。OptionExplicitSub hoge()IfFalseThenDim variable AsIntegerEndIf variable =1 Debug.Print variable...

View Article

Image may be NSFW.
Clik here to view.

VBA オートシェイプの吹き出しの剣先を狙った位置に表示させるマクロ

オートシェイプを扱うマクロで特にややこしいのがAdjustmentsプロパティの調整だ。Adjustmentsはシェイプを選択したときに黄色のハンドルが表示されるもので、ドラッグすることで調整ができる。説明などでよく利用される吹き出しもAdjustmentsプロパティを持っている。さて、今回は吹き出しが狙った項目を指すように、剣先の位置を調整するマクロを紹介する。今回作るもの今回は吹き出しと四角形が...

View Article

Image may be NSFW.
Clik here to view.

VBA 角丸四角形の角の丸めサイズを統一するマクロ(Excel・PowePoint・Word対応)

角丸シェイプは普通の四角形に比べて柔らかい印象を与えるため、よく使用される。しかし普通に配置すると、シェイプのサイズによって角丸のサイズも拡大・縮小するため、丸めサイズが不揃いで格好悪い。諦めているか、目視で微調整している方がほとんどだと思うけれど、できることなら数値指定でバシッと揃えたい。ということでマクロの紹介。角丸シェイプを複数選択した状態でこのマクロを実行すると、角の丸めサイズがきっちり揃う...

View Article
Browsing all 493 articles
Browse latest View live