t-hom’s diary

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

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

VBA 初心者向けコードについて議論

VBA

先日、インストラクターのネタ帳で以下の記事が公開された。Excel VBAのIf文で、X以上かつY以下/未満というAND条件を指定する:エクセルマクロ・Excel VBAの使い方これに対し、エクセル セミナー 講師の山岡さんから、If文の条件が重複しているとのツッコミが…

VBA 他人の書いた冗長なソースコードを読みこなすための7つのテクニック

VBA

VBAの初心者が書いたコードは、どうしても冗長になってしまう。知識は無くてもなんとか目の前の業務を楽にしたいという思いで、ネットからコピーしたりマクロの記録コードをつかったりしながらやっとの思いで仕上げたマクロ。私もVBAを始めた当初は、いわゆ…

VBA For文の略記法 ~ ネストしたFor文のNextはひとつにまとめることができる。

VBA

Next文の変数は省略できるが、そもそも何のためにあるのか疑問だった。しかし先日ネストされたFor文内が60ステップ超もあるコードを見て、なるほど制御変数が無いと、どのForに対するNextなのかこんがらがると思った。 いろんな人がメンテしているから、3タ…

VBA イミディエイトウィンドウを使用してマクロにマクロを書かせよう。

VBA

今回はイミディエイトウィンドウを使用してマクロでマクロを出力してみる。まずはイミディエイトウインドウの使い方を紹介しようと思う。イミディエイトウインドウに 「?変数」と入力すると、その変数の値が表示される。「?オブジェクト.プロパティ」でも良…

VBA:全てのブックで読み取り専用で開くかどうかを確認させる方法

VBA

ブック自体に設定を行うことなく、どのブックを開いたときにも読み取り専用の確認を表示させるためには、他のブックのイベントをキャッチするというテクニックが必要となる。それをするには、Excel自体をイベント付きの変数に格納してしまえば良い。 アドイ…

まだ買ってない気になるVBA本

今日はほろ酔いのため手短に。書店でいつも手にとっては棚に戻すVBA本がある。 気になるのでそのうち買いたいが、4月ごろに大きな出費を控えているためなかなか手がでず。アルゴリズム大事典 (I・O BOOKS)作者: 橋本英美出版社/メーカー: 工学社発売日: 2013…

Office TANAKA 田中亨さんの名言を勝手に補足

※本人の意図を代弁するものではありません。Office TANAKAの田中亨さんが代表理事を務める実践ワークシート協会のサイト(http://www.pwa.or.jp/)に以下のようなキャッチコピーがある。 マクロの速度なんて二の次。 裏技を使ってマクロを1分速くした。それを…

VBAでパスワード等の読みを作成するマクロ

VBA

パスワードを発行して通知する場合、i,l,1や0,Oなどの紛らわしい文字を確実に伝えるために、カタカナで読みを付けることがある。 そこで今回は、"a"を渡すと"エー"が帰ってくる関数を作りたいと思う。こういう方法が一般的だが、 Function GetPhonetic(Chara…

Excel VBAのRangeは、実はVBAの命令ではない

今回は雑学的な話。 しかも間違ってるかもしれないので、鵜呑みにせずあくまで一つの仮説として読んで欲しい。私が超初心者のころは、よくある勘違いとして、マクロの記録機能をマクロだと思っていた。でも今回はそんな勘違いの話ではない。一般的なマクロと…

Excel VBAでIEを操作するクラスを作成中

ExcelでのIE操作クラスを作成中。 といってもただのIEラッパーで、読み込み完了処理を隠蔽してVBA初心者にも使いやすくするのが主目的である。私がVBAでIE操作を始めた頃はインターネット上で調べるしかなくて、まずいサイトにあたるとコードが不安定だった…

Word VBA マニュアル等で多用する赤枠 ~ 背景画像を掴んでしまう失敗をなくす裏ワザ

VBA

今回はWord VBAネタ。Wordで業務マニュアル等を作っていると、スクリーンショットの一部を赤枠で囲うことがよくある。 通常はオートシェイプで塗りつぶし無しで作るが、この赤枠は枠の部分しかマウスで掴むことが出来ず、移動させるつもりがリサイズしてしま…

VBAは断じて、クソ言語などではない。

最初に私の置かれた環境について説明する。立場が異なれば意見が異なるのは当然なので。私はシステム運用の仕事をしているので、会社の端末に開発ツールの類をインストールすることは一切禁止されている。そのような状況下で何かしら作業を効率化しようと思…

VBAの自作クラスでデフォルトプロパティを設定する方法

海外のサイトで、自作のクラスにデフォルトプロパティを設定する方法を発見した。 (リンク先は英語) http://www.cpearson.com/excel/DefaultMember.aspxデフォルトプロパティとは、クラス名だけで参照できるデフォルトの値のことである。 たとえば、ExcelのR…

アスペクト指向について調べた結果、VBAではどうにもならないことが判明

まぁ、VBAでどうにもならないってのは当然予想していた結果だが、たまに見かけるアスペクト指向とは何なのかが少し理解できたので紹介する。簡単に言うと、オブジェクト指向の弱点を克服すべく生まれた新しい手法である。 (新しいとは言っても登場してから…

VBAでインターフェースを使って引数付きのコンストラクタを実現する。

タイトルにコンストラクタとあるが、正確にはコンストラクタもどきである。先日VBAのAriawaseライブラリのCore.basに書かれたInitのコードに感銘を受けた話を書いた。 ただ、私の個人的な好みとしては、外部DLLの参照よりはVBAの基本機能だけで解決してしま…

絶版良書 VBAでワンライナー?

またVBA本を買ってしまった。EXCEL VBA 1行コード活用辞典 (CD-ROM付き)作者: 土屋和人出版社/メーカー: 技術評論社発売日: 2006/05/02メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見るVBAの書籍は、入門書ばかりで中~上級者向けのもの…

Excel VBAの列挙型を使ってセルを指定する。

VBA

VBAでセルを指定する時、RangeプロパティとCellsプロパティがあるが、Cellsは列に対応する数字が直感的に分からないので、これまでは敬遠してきた。 しかし、この列指定を列挙型に変えたら、劇的にわかりやすくなったという話。Excelでこんな表を作ったとす…

VBAでTreeViewControlのエクスポート・インポートするとレイアウトが崩れるバグ

treeviewの使い方に関しては、以下のページが詳しいのでそちらを参照されたし。Office TANAKA - Excel VBA Tips[TreeViewコントロールの使い方]さて、このTreeViewであるが、困ったことにフォームのエクスポートをすると壊れてしまい、張り直しが必要である…

コードリーディング(Ariawase)

VBA

さて、今日は色々なところで紹介されているVBAのスーパーライブラリAriawaseについて。Ariawaseについて知らないVBA使いの方は、こちらに詳しく解説されているので参照されたし。 ※2015年8月現在、参照先が消滅しました。Ariawaseについてはネット検索等で調…

Excelのデータ転記ツールを作成した。

作ったのは2014年の後半だが、今更ながら公開することにした。 (当時はネット上で何かを公開するという発想を持っていなかった。)紹介動画はさっき作ってYouTubeにあげたもの。 ※ただなぜか再生ボタンを押すとセーフモードで閲覧できないと表示される。 Ex…

VB.NETでキーフック

デザインパターンの学習は順調である。いまのところそれについては語るネタがないので、今回は以前よく作っていたVB.NETのネタ。 バージョンはWindows 7標準の.Net 3.5.1以上をターゲットにしている。 Excel VBAに貼り付けても動かないので注意。 C#のサンプ…

デザインパターンの学習

Eclipseの基本操作が分かったところで、2年ほど放置してた積ん読本(以下)でデザインパターンの学習を始めた。増補改訂版Java言語で学ぶデザインパターン入門作者: 結城浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2004/06/19メディア: 大型本購入…

VBAでインターフェースを使う

VBAはクラスを継承することができないが、インターフェースを作成することでポリモーフィズムを実現させることができる。元ネタはこちらのサイト 4.5 インターフェース継承による開発 - EXCEL-VBA開発講座 VBAに関しては入門者向けの情報が多いなか、高度な…

VBAでClass_Initializeに引数を渡したい。

はじめに断っておくと、実際にVBAのコンストラクタに引数を渡す裏技は無い。 タイトル詐欺で申し訳ない。 2015/2/15追記 これより後の記事で、もう少しスマートなやり方を発見している。(以下リンク) VBAでインターフェースを使って引数付きのコンストラクタ…

Excel VBA ひとつのプログラムを作り上げるプロセスを丸ごと動画で紹介

VBA

2013年に収録して寝かせていた動画を、公開することにした。入門書はひととおり終えたけど、実用的なプログラムをどうやって作るのか見当がつかないという方に見ていただければと思う。Excel VBA 実用プログラム作成プロセスの紹介 - YouTubeいろいろ失敗し…

amazon 初レビューしてみたら数百万人が喜んだ

昨日のJava本の件、レビューしてきた。 amazonカスタマーレビュー初投稿!こんなメールが届いた。 ふむ、テンプレートとはいえ、感謝されるのは悪い気はしない。 しかし数百万人が喜ぶってのはちょっと持ち上げすぎじゃないか?ほら。 日本にプログラマは何…

Eclipseのインストールで奮闘

昨日、この書籍を入手した話のつづき。 書籍のCD-ROMからEclipseのインストールを実行したが、これが大ハズレ。書籍の説明ではSetup.vbsを実行すると初回はJDKがインストールされて、次回にSetup.vbsを実行した際はインストーラが起動することになっている。…

Excelアドイン用のリボン作成方法

Excelアドイン用のリボン作成方法を動画にしてみた。マシンが非力なため、画面録画したwmvをmp4にするだけで1時間弱。。 色々スマートでないところはあるが、撮りなおしの気力はないので、そのままエイッExcel アドイン用のリボンを作成する - YouTube※文字…

ExcelでRoboCodeを開発してみる

VBA

ちょっとWebでVBAチュートリアルから脱線して、ExcelでRoboCodeもどきを作成中。 ※表示がやや乱れてるのはGIFを圧縮したため。RoboCodeで楽しくJavaを学習できるので、VBA版ができればVBAの学習に良いのではないかと思った次第。 今のところ同時に単一動作し…

Excel VBAでIndexもシート名も使わず、シートオブジェクトをダイレクトに指定する方法

VBA

Excel VBAでシートを指定するには、名前指定・インデックス指定・オブジェクト名の直接指定がある。 最後の方法はあまり知られていないと思うが、とても便利なので是非活用してみてほしい。 一応おさらいとして、名前指定とインデックス指定のコードも掲載し…

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