t-hom’s diary

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

2015-12-01から1ヶ月間の記事一覧

なぜ難しい言葉を覚えなければならないのか。

最近購読しはじめたブログに、こんな記事が掲載された。 risa.hatenablog.com素晴らしい紹介記事だ。早速Kindle版書籍を購入した。さて、ちょっと上の記事とは趣旨は違うかもしれないけれど、私も「語彙力」について温めていたネタがあるので、いい機会だか…

Android開発環境構築で丸一日ハマった ~ Android Virtual Device(AVD)のディスプレイがエミュレーターに収まらない。

表記の件、こういうことである。これはAndroid Emulatorの起動画面である。androidと書かれているのだが、aとdが隠れてしまっている。ナンダコレハ。今回使用したインストーラーは「android-studio-bundle-141.2288178-windows.exe」。 本日時点で公式から取…

なぜ32ビット版Windowsのパソコンに4GB超のメモリを積んでも意味がないのか。

私は以前、仕事で某社の社内ヘルプデスクにいたのだが、そこではパソコンの調達も担当していた。社内で選定したパソコンのカタログから商品を選んでもらうのだが、ときどき32ビットWindowsに6GBとか8GBのメモリを積もうとする方がいらっしゃった。とにかくメ…

ブログ記事の概要、編集してますか?

先日書いた記事がGoogleで検索できるか試していたところ、場合によっては誤解されそうな概要が表示されていることに気付いた。上の記事では、VBAでシェイプの重なりを判定する方法について述べているが、概要だけ見ると「なんだ、結局できないという話か」と…

VBA ReDimはなぜ最後の次元だけしか拡張できないのか。

多次元の動的配列を作ることがある。コードはこういう感じだ。 Dim Arr() As Byte ReDim Arr(1 To 3, 1 To 3) 最初のReDimは拡張というよりは初期化なので、これはうまくいく。3×3のサイズの配列なので、イメージとしてはこんな感じだろうか。 ところでこの…

VBA クラスモジュールを使用し、シェイプ同士が重なっているかどうかを判定する方法

今回の記事では、VBAでシート上のシェイプをすべて走査してどのシェイプと重なっているかを表示させるところまでを紹介する。 具体的なグループ化については今のところまだ完成していないので取り扱わないが、今回の記事がスラスラ理解できるレベルの方なら…

VBA 他人のコードはどうせ誰も読めないという前提に立って考える

この記事は事務員・運用担当者など、非開発職の方々を対象としている。 プログラマーとして雇われ、業務でプログラムを作成している場合はここに書いていることは当てはまらないので注意してほしい。さて、VBAでは、IfやForなどの基本的な構文と、RangeやWor…

VBA Set Obj = Nothing は必要か

オブジェクト変数を使い終わった後、必ず変数にNothingをセットしているコードが多いが、実はあれは別に無くても良い。Nothingを代入することでオブジェクトが破棄されると思っている方も多いと思うが、厳密には違う。オブジェクトの破棄のタイミングは、オ…

VBA Excelでフォームのタブオーダーを自動設定する方法

次のフォームをご覧いただきたい。 普段からキーボードで入力されている方はご存じだと思うが、ひとつの項目を入力し終わったとき、Tabキーを押すと次のテキストボックスにカーソルが移動する。 実はテキストボックスのTabIndexプロパティには数値が入ってお…

VBA コンボボックスを使いやすくするテクニック

コンボボックスといえば、私がこの世で最も嫌いなユーザーインターフェースの一つである。皆さんも一度くらいこういう使われ方をしているコンボボックスを見たことがあるだろう。 例えば紙のアンケート用紙10,000枚を手渡されて、このインターフェースで都道…

VBA クラスモジュールの使いどころ ~ Excelの一覧表とクラスモジュールは相性がいい

VBAには標準モジュールのほかに、クラスモジュールというものがある。 クラスモジュールについて調べようと思っても日本の書籍ではあまりきちんと解説されておらず、主にネットから情報を得ることになる。 使い方についてはまだ情報が存在するのだが、「使い…

VBA 巨大な表を配列に入れるとメモリはどうなるのかという心配について

以前このブログでも紹介したが、セル範囲と2次元配列は相互に変換できる。thom.hateblo.jpたとえばこんな風に。 Sub セルから配列へ() Dim Arr() As Variant Arr = Range("A1:Z100") End Sub Sub 配列からセルへ() Dim Arr(1 To 100, 1 To 26) As Variant Ra…

VBA Newキーワードの使い方は2種類だけではない。 ~ With New Objectという使い方。

オブジェクトを扱うときに登場するNewキーワード。おそらく以下の2種類の使い方が一般的かと思う。まずは、変数へ新規インスタンスをセットする際に使うNew。 (以下のObjectには任意のオブジェクトが入る。例:Collection) Dim obj As Object Set obj = New O…

名著「ピープルウェア」完読 ~ 高品質がコスト低減をもたらす

ソフトウェア開発の名著「ピープルウェア」を完読した。ピープルウエア 第3版作者: トム・デマルコ,ティモシー・リスター,松原友夫,山浦恒央出版社/メーカー: 日経BP社発売日: 2013/12/18メディア: 単行本(ソフトカバー)この商品を含むブログ (10件) を見…

VBA 開きすぎたコードウインドウを一括で閉じるマクロ

VBA

VBAでコーディングしていると、いつのまにか大量のコードウインドウを開いている。 普段最大化して使っている分には困らないのだが、ときどきモジュールを並べて表示させたいときがある。 一応VBEのメニューにはウインドウを整列させるコマンドがあるのだが…

いろんな使われ方をする「バイナリー」という言葉の本質を探る

コンピューター用語としてよく登場するバイナリー。実行ファイル(exe)のことをバイナリ―と呼んだり、二分探索をバイナリ―サーチと呼んだり、2進数のことをバイナリ―と呼んだり、VBAでテキストの大文字小文字を区別して比較するときのモードがバイナリー比較…

VBA 線形探索(リニアサーチ)と二分探索(バイナリーサーチ)

VBA

Excelのある列からVBAで値を探す方法はいくつかある。今回はこのようにExcelの全行に値を敷き詰めて、それを検索してみようと思う。 探すもなにも、そのまま行番号なのだが、VBAでの検索用サンプルとして大量の値が欲しかったのでこれで妥協することにした。…

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