2018-01-01から1年間の記事一覧
オートシェイプを扱うマクロで特にややこしいのがAdjustmentsプロパティの調整だ。Adjustmentsはシェイプを選択したときに黄色のハンドルが表示されるもので、ドラッグすることで調整ができる。 説明などでよく利用される吹き出しもAdjustmentsプロパティを…
VBAでは、変数宣言をIfやFor等の制御構文の中に書くことができる。 作法としてどうなのって話は一旦置いといて、とりあえず実証してみよう。以下のマクロは正常に実行できる。 Option Explicit Sub hoge() If False Then Dim variable As Integer End If var…
今回の記事は重なりあうシェイプを自動判定してグループ化するマクロ。 といっても以前にクラスモジュールを使用してシェイプ同士が重なっているかどうかの判定までは作ってるので今回は手入れしてちゃんとグルーピング部分まで完成させたのでコードの紹介の…
今回は多重的にグループ化されたシェイプを全てグループ解除するマクロを紹介する。 グループ化されたもの同士がさらにグループ化されていると、一度解除しても以下のようにまだ子グループが残る。 もう一度解除するとようやくすべてのシェイプが分解される…
今回はExcelのウィンドウを1秒ほど最前面に出してから、元の重ね順に戻すマクロを紹介。 マクロというか、ほとんどAPI処理になってしまった。何がしたかったかというと、以前作成したスクリーンショット自動貼り付けマクロ(以下)において、貼り付けがうまく…
TwitterでVBA検索してたら面白そうなネタがあったので乗っかり。税法のカッコ書きの部分にオリジナルの書式を適用するマクロが作りたい様子。ふむふむと思って調べてみた。 十 同族会社 会社(投資法人を含む。以下この号において同じ。)の株主等(その会社…
VBAには3種類のプロシージャがある。SubとFunctionとPropertyだ。 しかしその守備範囲はキッチリ線引きされているわけではなく、使い分けに困る場面がある。今回はその使い分けのヒントとなる考え方を紹介する。なお、3種類と書いたがProperty にはLet・Set…
ユーザーに実行させたくないマクロを「マクロの実行」メニューから隠す方法として最も簡便なのはプロシージャをPrivateにしてしまうことだ。 しかしマクロがある程度大きくなると、複数のモジュールにプロシージャを分散させたい場合がある。他モジュールか…
今回はExcelのステータスバーに電光掲示板のように文字をスクロールさせるマクロを紹介。 もともと作りたかった案件とは違うが、そちらが失敗して副産物として単体で何か使えそうな気がしたので簡単にメモ。矢印の方向に文字が流れる。 コード ※Mainプロシー…
VBAに限らず全てのプログラミング言語で言えることだが、コード中に値(あたい)が直接登場することは無い。 最近、「値とは何か」ということを掘り下げて考えることがあり、ようやくこの結論に行きついた。たとえば、数字の「1」。これは一般的に値だと理解さ…
何かを学んでいると、まだ説明されていない箇所に対して色々と疑問が湧いてくることがある。たしかに、分からないというモヤモヤした気分のまま次に進むのはなんとなく気持ち悪いものだ。一般的に学習において疑問を持ち、自主的に調べるのは良いこととされ…
プログラムのコーディングで一番時間を消費するのは「思考」と「試行錯誤」である。コーディングスピードが落ちることを嫌って極端に短い変数名をつけたり、一つのプロシージャで一気に書ききったりするとコードが把握しにくくなり、「思考」に時間をとられ…
※今回の記事は基本的に自分用の備忘録です。VBAの学習における知識の依存関係の整理を試みた。 試みたというのは、お世辞にも成功したとは言えない為である。書籍でプログラミングを学ぶ際は、ふつう1ページずつ読み進めていく。 これに対して、実際の知識体…
Excelには、悪意のあるマクロによってコンピューターが被害を受けることがないようにいくつかの防御機構が備わっている。 しかしExcelマクロの解説書・解説サイト等では利便性の観点からか、設定を無効化しましょうという方向での解説が多く、セキュリティリ…
プログラミング言語とは何か。 初心者に向けて、よく次のような説明がなされる。 コンピューターは日本語や英語で指示しても理解できない。だからコンピューターが理解できる言葉、つまりプログラミング言語でコードを書く必要がある。 プログラミングを学び…
PCのファイルは通常「フォルダ分け」によって整理される。 ところがフォルダ―ツリーを使った整理は実際のところそんなにうまく機能しない。 なぜなら、コウモリ問題が存在するから。コウモリ問題とは、物事を単一の基準で分類していくと両方の基準に合致した…
VBA初心者のコードを見ると、インデントが乱れていることが多い。 中・上級者にとって、インデントはあまりに自明のことで、それゆえに詳しく解説されることがない。せいぜい入門書の最初の頃にちょろっと「きちんとインデントしましょう」と書かれる程度で…
プログラミングでは識別子・キーワード・文字列・演算子・リテラルといった小難しい言葉が登場する。 意味は調べれば分かるが、なんでわざわざそんな小難しい言葉を使うんだろうか。演算子は、計算記号って呼んじゃだめ? 文字列は、単語って呼んじゃだめ? …
いつも読んでるid:akashi_keirinさんのサイトに食指が動くネタがあったので乗っかってみようと思います。 akashi-keirin.hatenablog.comTwitterで本人にコンタクトして快諾いただきました。さて、まずは同じように部屋の表を用意。 そして、部屋をコレクショ…
重複データを探すというのは比較的よくやる処理だけれど、データが矩形に配置されていてその姿のまま処理したい場合は関数では少々面倒くさい。今回は選択した矩形範囲のデータから内容の重複するセルを塗りつぶして可視化するマクロを作った。 ちなみに定数…
さて、そろそろ世間の皆様もお仕事が始まる頃だろうか。新年を迎え、今年こそは「〇〇」と意気込んでいる方も多いと思う。 これに対し先日、Twitterでは冷ややかな反応が「いいね」を集めていた。普段から「〇〇」してない連中が新年にこぞって「〇〇」を誓…
前回の記事で紹介した音声読み上げの仕組みをVBScriptに移植して、タスクに登録することで一定時間ごとに音声で休憩を促してくれる仕組みを作った。Windows 8.1以降で動作すると思われる。7は多分、音声合成エンジンが標準で入っていないのでダメ。今回は英…
今回はExcel VBAでSAPIを使った音声読み上げを紹介する。 SAPIとはSpeech Application Programming Interfaceの略で、Windowsアプリケーションで音声認識や音声合成を使うためにマイクロソフトが開発したAPIである。 Windows 8.1 以降のOSには標準で音声合成…