2018-01-01から1年間の記事一覧
VBAではマクロを記述する場所として複数の標準モジュールを利用できるが、何を基準に分けたら良いか分からないというツイートを見かけたので、私の考えを記しておこうと思い久々にブログ更新。モジュール分割の大前提として、私はまずプロシージャが適切に分…
ゲームでは正確性よりもスピードが求められる場面がある。 当たり判定もその一つで、キャラ同士がぶつかったかどうかの判定は矩形や正円などに単純化して表現される。今回Twitterで羽毛田氏がたい焼きのキャラの当たり判定の方法を模索してるようなので以下…
Microsoftがクリップアート廃止してからもうすぐ4年。 当時ゴリゴリのクリップアートユーザーだった私はとても残念に思っていたけれど、ふと最近資料を作っていて実はクリップアートが無い方が資料の質が上がるのでは?と感じるようになった。当時はこういう…
何やらTwitterでPowerPoint VBAネタがよく流れてくるので便乗してみる。と言っても新規ネタは無いので昔Webサイトに掲載した内容の再掲。 パワーポイントVBA - You.Activate (サイトの方のアクセスは微量なのでなかなか日の目を見ない。) フローチャート等…
論語に「辞は達するのみ」という言葉がある。 これは「言葉はその意味が相手に伝わることが大事だ。」という意味だ。孔子が何を伝えたかったかという話は、以下2通りの解釈がある。 だから分かりやすく慎重に言葉を選択するべき だからいたずらに飾り立てず…
※タイトルにつられた皆さん。多分イメージしてるものと違いますのでガッカリされないようご注意ください。Twitterで、IfやForの終了構文を自動補完することができないのかなという疑問が投げかけられた。 VBEには文字入力を検知してマクロを走らせるような機…
断捨離とかミニマリストとかがもてはやされていた頃、なんとなく感じた違和感。 それは私がシステムの運用に携わっているためかもしれない。一度開発されたシステムは、その後何年にもわたって運用されていく。 作って終わりではないのだ。私は、お部屋の片…
Twitterでお題が流れてきたので乗っかってみた。方眼紙Excelの正しい使い方。 pic.twitter.com/a05wFJpatH— waenavi (@waenavi_jp) 2018年8月31日これの本人返信ツイートでマクロは禁止ですと書いてあったんだけど気にせずにマクロ記述時間込みでトライアル…
TwitterでJavascriptを使った綺麗なアニメーションが流れてきたので、VBAでも真似してみた。 ics.media本家の躍動感まではコピーできなかったけど、それなりに見栄えのするアニメーションができたので紹介。 作り方 まずSheet1のオブジェクト名をプロパティ…
以前、フローチャートを作成するツールの作り方を紹介した。 thom.hateblo.jpこちらの反響が良かったのと、ちょうどお盆休みをいただいてて良い機会なのでもうすこしブラッシュアップし、GitHubで公開してみた。 公開場所とダウンロード方法 以下のリンクに…
今回はVBAのFor Eachステートメントが仕様上、出力順を保証しない理由についてC#で作った自作のコレクションを使って説明してみようと思う。さて、普段ならコードから紹介して後で説明に入るスタイルを取るが、今回はちょっとややこしいのでいきなり本題の説…
元ネタはこちら。おもしろそうなのでやってみた。 infoment.hatenablog.com今回やりたいことは、文字列の一部を置換したときにその履歴そのものを取り消し線と色で表現したいというネタ。つまり図示するとこういうこと。 参照元の記事では1回目は上手く行っ…
VBAに限らずすべての言語に言えることだが、プロシージャが複雑になればなるほどバグが混入しやすくなる。そこで今回はプロシージャの複雑度を測る「循環的複雑度」という指標を紹介する。 何がどう循環的なのか知らないけど、名前が醸し出すややこしさとは…
今回すんごいスコープを絞ったタイトルにしたけど、それには訳がある。このブログで過去にマージソートのコードを紹介した。 thom.hateblo.jpその際コードを作るのにとても苦労したので、もう少し配列を抽象的に扱えるクラスを作って楽にマージソートしよう…
VBAでは、セル範囲と配列の相互変換ができるが、たとえ1列分しか変換しなくても二次元配列となってしまう。参考 infoment.hatenablog.comVBAのJoin関数でひとつの文字列に加工しようと思ったら色々と工夫が必要なのだが、実はワークシート関数のTRANSPOSEを…
以前に以下の記事で再帰を説明するのに、普通の関数呼び出しに置き換えるアプローチをとった。 thom.hateblo.jp今回はそもそものプロシージャ呼び出しの仕組みから説明しようと思う。例えば以下のコードでProcedureCall1を実行してみる。 Sub ProcedureCall1…
業務では固定長のコードを扱うプログラムを作ることがある。例えば以下のようなコードがあったとする。 20180728MPGこれは私が考えた適当なコードだが、2018年7月28日生まれの男性プログラマーを表すことにする。つまり先頭8桁が生年月日、次の1桁が性別、最…
最近、良い買い物をしたら出来るだけAmazonでレビューを書くようにしている。 その理由は、将来的に私がさらに快適な暮らしをしたいからだ。 レビューを書く意義 Amazonでレビューを書くことと、快適な暮らしがどう繋がるのかを以下に図示してみた。つまり気…
IT技術を独学するにあたって、挫折しないために必要なことは何だろうか。 挫折といっても原因は様々だけど、大きく分けて「続かない」と「始められない」の2種類がある。 今回紹介するのは「始められない」を避けるために大事なこと。ある技術の学習を始めら…
本日このブログを常時SSL化したので、備忘録も兼ねてここに記しておく。 切り替えそのものはダッシュボードから簡単にできるのでまぁ簡単。 問題はその後。まぁただ、以下の広野さんの記事を読んで、面倒な後処理が発生することは想定内ではあった。心の準備…
VBA Select Case文における条件式の短絡評価活用の是非について述べる。 前提 以下の書籍で、Select Case文の条件式短絡評価について記載されているが、そのテクニックとしての是非についてTwitter上で疑問が上がっていた。入門レベルでは決して足りない実務…
メソッドチェーンとは メソッドチェーンとは、ひとつのオブジェクトに対して複数メソッドを1ステートメントで実行するテクニックである。 具体的には、オブジェクトのメソッドが自分自身を返すように設計することで、メソッドをドットで繋ぐだけで次々とその…
このブログを書き始めた当時、VBA界隈は旧態依然としたコードで溢れていた。 全ての変数はプロシージャの先頭で宣言され、変数名は極端に省略されて読んでも意味が分からず、それを補完するために本来必要のないコメントでコードは散らかっていた。プログラ…
今回はマクロで利用する設定値をシートに保存し、汎用的に文字列でアクセスできるようにするテクニックの紹介。 作り方 標準モジュールを挿入し、プロパティウィンドウからオブジェクト名をConfgに変更する。 Configモジュールに以下のコードを張り付ける。 …
プログラミングが上達すると、コードの共通部分をプロシージャに切り出すことを覚える。 コードを共通化すれば、共通部分に変更が発生した場合に、修正は一か所で済むので効率的だとされる。はたして本当にそうだろうか? 私もつい最近まで、コードの共通化…
VBAでは互いに関連するプロシージャをひとつのモジュールに纏めることが多い。 このとき、呼び出す側と呼ばれる側のどちらを先に書けば良いだろうか。以前の私の考えでは、例えばProc1がProc2を呼び出すとき、呼ばれる側を先に定義しておくという意味で先に…
今回はマクロを実行できるリボン作成方法の紹介。 Excel2013をターゲットにしている。2010でもほぼこの通りにできるが、微妙にrelsに指定するURLが違ったりするのでうまくいかない場合は他のサイトを合わせて確認することをお勧めする。 ブックの準備 新規ブ…
プログラミングでどうにもならないバグに出会ったとき、そのバグを回避するコードを書くことになる。 バグの回避コードというのは厄介で、単体で読んでも一見何をやっているのかさっぱり分からないことが多い。これをメインの処理コードに混ぜ込むと、メイン…
作成中のマクロでバグっぽい事象が確認されたのでメモ。 発生した環境はExcel 2013 32bit on Windows 10 Home 64bit。マクロというよりは、手でやっても同じことになるので手作業の方を先に紹介。 新規シートを挿入する。 B1セルに時刻を入力する。 A1:B2の2…
角丸シェイプは普通の四角形に比べて柔らかい印象を与えるため、よく使用される。しかし普通に配置すると、シェイプのサイズによって角丸のサイズも拡大・縮小するため、丸めサイズが不揃いで格好悪い。 諦めているか、目視で微調整している方がほとんどだと…