t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

2019-01-01から1年間の記事一覧

マクロ作成者が覚えておきたい重要な概念「冪等性(べきとうせい)」について

冪等性(べきとうせい)とは、ある操作を1回行っても複数回行っても結果が同じであることをいう概念である。 言葉の響きは難しいが、これはプログラマーなら何度も遭遇するシチュエーションなので、是非とも覚えておきたい。たとえばExcelマクロにおいて、以下…

VBA 私のコーディング風景垂れ流し動画紹介

先日Twitterでは公開したんだけど、ツイッターは鍵垢なのでこちらでも公開。20分くらいあるので倍速再生でも良いかも。以下に最初に動画内でテキスト入力してる内容を転記したので、1:30まで飛ばしてそこから見ていただけたら良いかと思う。 みなさんこんに…

VBA イミディエイトウインドウを使って簡単にカレンダーを作る方法

VBA

Excelでは色んな方法でカレンダーを作ることができるが、割と面倒くさい。今回はイミディエイトウインドウを使って、以下のようなカレンダーをサクっと作る方法を紹介。 まず、曜日を描きたい場所を範囲選択しておく。 そしてイミディエイトウインドウで次の…

VBA 過去直近のX曜日を求めるワンライナーコード

VBA

今回はさくっと短めの記事。まず過去直近の日曜(当日含む)の日付を求めるコードがこちら。 ?date-weekday(date,vbSunday)+1 クエスチョンマークは、イミディエイトウインドウで実行することを想定して書いている。 そして当日を含まない過去直近の日曜の日付…

VBA Excelがフリーズするほど大量のデータを特定列の値で分類して別シートに分ける処理

※注意 今回の記事はアイデアを記したものであり、コードの全体は掲載していません。ヒントを求めている方向けです。答えを求めてる方はごめんなさい。Excelシートの特定列の値でレコードを分類し、個別のシートに転記する処理を作りたい場合がある。 いつも…

Excel 2013ではセル範囲に名前を付けるとズームアウトしたときに範囲名が表示される。

表題の件、もう何年も使ってるのに今まで知らなくて、偶然見つけてとても驚いたのでここに記しておく。 私の手元の環境でしか検証してないので他の環境は不明。たとえばこんな風に名前が定義されていたとする。 それぞれ開始セルと終了セルには私が予め文字…

VBA タイムスタンプからユニークキーを生成する。

VBA

Excelでレコードごとにユニークキーが欲しくなることがある。ユニークキーとは、一意にアイテムを特定でき、変わることのないコードのことで、数桁の数値や文字列で表現される。 実用上は単純な連番でも全く問題ない。ただ以下のようなシチュエーションで連…

VBA オートシェイプを使って般若心経をスクロールするアニメーション

今回の記事はオートシェイプを左から右へスクロールさせながらメッセージを表示させるマクロ。 ありがたいお経を題材にしてみた。 コード クラスモジュール クラス名は「CharBox」として、以下のコードを張り付ける。 Private sh As Shape Private limit As …

オブジェクト指向でつまづく7つのポイントと処方箋

こちらの記事で伊藤先生も書かれているように、この数年でVBAのクラスモジュールに関する情報が充実してきている。これからクラスモジュールについて学習しようと考えている方も沢山(期待を込めて)いらっしゃることと思う。そこで今回は、オブジェクト指向を…

VBA 環状矢印を複数個つなげてリング状にするマクロ

VBA

オートシェイプで矢印を綺麗な環状に並べたい場合がある。 その名の通り「環状矢印」というシェイプを使うのだが、手でやるとなかなか綺麗にできない。 試しに手でやってみたのがこちら。。 ひどい。そこで今回は環状矢印を綺麗に並べるためのマクロを作成し…

仕事の話 属人化とロールについて

仕事をまわしていく中で、属人化がリスクであるということがよく言われる。 属人化と聞くと、まさに「この人しかできない」「この人しか分からない」という状況をイメージされると思う。私が思う属人化はちょっとこれとは違う。 ある仕事について、きちんと…

VBA マクロでExcelのシェイプを旋回運動させる

VBA

こちらの記事に触発されて、ちょっと昔やった別の方法をご紹介。 infoment.hatenablog.com参照元はとても王道的に計算してるんだけど、私のは手抜き。コードはこちら。 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub FakeCi…

VBA Win32APIを使って、文字列の実描画幅を取得する。

VBA

PCのフォントには固定幅のものと可変幅のものがある。固定幅のフォントは単純に同じ文字数で改行すれば綺麗な矩形になるが、可変幅のフォントでは単純に同じ文字数で改行してもガタガタになる。これを概ね揃うようにWin32 APIを使って、文字列の幅を測りなが…

基本情報技術者の受験に役立つ、過去に書いたVBA記事の一覧をまとめてみた。

新年の初投稿で書き忘れてたので。さて、新年と言えば去年はこのような記事を書いた。 thom.hateblo.jp節目のブースト効果で、今年こそは何か資格を取ろうとか、色々考えている方もいると思う。 私が購読しているブログでも新年の意気込みが。 今さらながら…

VBA Dir関数とFileSystemObjectの比較

※ 冗談の通じない方はご退場願います。はじめに私の立場を明確にしておくと、私は個人的にFileSystemObject(以降FSOと記載)が好きで、Dir関数はあまり好きではない。従ってDir関数で事足りる処理でも基本的にVBAコードではFSOを利用する。この記事ではその理…

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。