2011年12月31日

できるけどお勧めしないこと

予想はしていましたが、こちらでダウンロード販売している『追加関数』の“本”は、正直、まだほとんど売れていません(^^;)。
そこで、その宣伝の意味も兼ねて、またまたユーザー定義関数(UDF)のネタを。

UDFでは、一般的なVBAのプログラム(マクロ)に比べて、実行できない処理が結構あります。
たとえば、セルやワークシートを直接変更するような処理です。

一方で、一般的なワークシート関数のように「数式の中で計算結果を返すだけ」というわけでもなく、やはりVBAのプログラムですから、いくらかはその枠を超える処理も実現可能です。
具体的には図形(描画オブジェクト)を変更する操作などで、その実例となる関数も、同書にはいくつか収めています。

また、関数が計算されるタイミングで、メッセージボックスや入力ボックス、ユーザーフォームなどを表示することも可能です。
たとえば再計算が行われるつど入力ボックスを表示し、入力された値を計算で使用するといった利用法が考えられます。
こうした関数の使用例も、実はいくつか考えたのですが、最終的に同書では没としました。

没にした理由は、一言でいうと、[関数の引数]ダイアログボックスとの相性が悪いから、です。

条件が真の場合に指定したメッセージを表示する「IF_MESSAGE」という関数の場合、[関数の引数]ダイアログから使用しようとすると、ダイアログを表示している状態の上からメッセージボックスが何度も表示されてしまいました。
[関数の引数]ダイアログを使わず、セルに直接入力するような注意書きを付けて収録しようかとも思ったのですが(実際、そのようにしている関数もあります)、そこまでするほど面白くも有用でもないと判断し、同書には収録しませんでした。

この例に限らず、[関数の引数]ダイアログでは、計算の結果をプレビューするため、セルに入力する前の段階で、その関数の処理が実際に行われます。
このため、求める情報の取得手順が複雑な場合は、ダイアログ上での操作が重くなってしまったり、表示に不具合が発生する可能性もあります。

UDFではこのような処理は避けるか、あるいはダイアログを使わず手入力してもらうことを徹底する必要があります。
posted by 土屋和人 at 12:27| Comment(0) | TrackBack(0) | Excel

2011年11月30日

Excel追加関数50

Word VBA本に続く自主制作PDF本の第二弾『Excel好きに捧げる 面白・便利な 追加関数50』(自分でもちょっとどうかと思うタイトルですが、少しでもキャッチーにしたかったので^^;)が完成し、今日からダウンロード販売を開始しました。

EF50Cover.jpg




前回のユーザー定義関数ネタは、要するにこういうことをやっていたからでした。

ただし、ユーザー定義関数のコードの書き方を解説しているわけではなく、私が思いついた追加関数の“使い方”を、組み込みのExcel関数と同じ要領で紹介するという、結構趣味的な本です。
これ1冊だけでなく、「趣味のExcelシリーズ」というそのまんまのシリーズ名で、ニーズのあるなしに関係なく(^^;)、これからも自分が面白そうだと思ったネタをやっていきたいとも思っています。

まあ、そんなふうに言ってて、結局これ1冊で終わり、というのも、私的にはありがちなパターンなのですが……(^^;)
posted by 土屋和人 at 16:24| Comment(0) | TrackBack(0) | Excel

2011年11月23日

ユーザー定義関数

最近はユーザー定義関数に凝っています。

どうせVBAを使うならイベントプロシージャのほうが自由度は高いし、いろいろと制限のあるユーザー定義関数をあえて使う意味はないかも、と考えていた時期もあるのですが、その制約のあるところが逆に面白く思えてきて……というのは少々オタク的でしょうか?(^^;)
セルの操作はできないけど図形の操作ならできそうだ、とか、メッセージや入力ボックスも表示可能、とか、できることとできないことを仕分けしていく作業は、確かにちょっとマニアックかもしれません。

ただ、Excelでいきなり“完成品”を作って提供するのではなく、各ユーザーが完成品を作るための“部品”として提供するのであれば、関数というのは割と利用しやすい形式なのではないでしょうか。
数式・関数はある程度使いこなせるけどVBAまではちょっと……というユーザー層は、結構厚いような気がします。

VBAを利用すれば、たとえばアドインを組み込むとUIにボタンが表示されたり、ある操作を行うと自動的に一連の処理が実行されて……みたいなことが可能で、それはそれで、VBAの知識がないユーザーにとっても便利です。
ただ、それは追加された“機能”ではあっても“部品”とはいい難いでしょう。
VBAの知識のない人でも、自分自身である程度その機能をコントロールしながら、独自の“完成品”を作っていくことができるという点で、ユーザー定義関数という形式にはやはり一定の存在価値がある、と最近は思うようになりました。

さらにいうと、ユーザー定義関数をいかに組み込み関数の使い勝手に近づけていけるか、というのも、最近の大きなテーマです。
具体的には引数の仕様や「関数の引数」ダイアログボックスでの表示内容などですが、その過程で組み込み関数の仕様に対する理解が深まる部分もあり、またある意味Excelの開発者側に加わったような感覚(錯覚ですが^^;)を覚えたりもできます。

ExcelとVBAが好きな人、さらに深く学びたい人には、結構オススメです。
posted by 土屋和人 at 14:53| Comment(0) | TrackBack(0) | Excel

2011年07月17日

Word VBA 無償公開終了

私のWebサイトで、昨年の7月から全ページの無償公開を行っていた『Word VBA基本&活用テクニック』ですが、本日、公開を終了しました。
今後は、下のリンク先からのダウンロード販売となります(ただし、Part 1のみ、サンプルとしてこれまで通り閲覧可能です)。

Word VBA基本&活用テクニック Word 2010/2007対応

内容的にも、これまでのものとまったく同じというわけではなく、Word 2010ベースの解説に修正しています。
また、いろいろと新しい要素も追加しています(テキストボックスとかフィールドとか)。

今回、改訂のために前バージョンを読み返してみて、結構あちこちに問題のある記述があったことに気がつきました。
単なるうっかりミスもありましたし、(その時点で)間違えて理解していたこともありました。

一年後ぐらいに今回の改訂版を読み返して、同じような感想を持たずに済むことを願っていますが……(^^;)
タグ:Word VBA
posted by 土屋和人 at 21:45| Comment(8) | TrackBack(0) | Word

2011年07月09日

ショートマクロ

最近日経パソコンで記事を書かせてもらっている、と書きましたが、7.11号から新たに「ビジネスに役立つ Excelショートマクロ活用術」という連載が始まりました。
全6回の予定です。
http://pc.nikkeibp.co.jp/pc/npcs/index.shtml

要するに、VBAのイミディエイトウィンドウを使って、普通にやったのでは面倒な作業を簡単に解決してしまおう、というもので、コンセプト的には以前技術評論社さんから出させていただいた『Excel VBA 1行コード活用辞典』という本に近いです。
あまり売れなかったからリベンジ(^^;)……というわけではありませんが、もともと単行本でやるより雑誌のほうが内容的には向いていたかもしれません(本では結構苦しいネタもありましたし)。
Excelのバージョンも上がったので、当時とは「できること」や「この方法でやると便利なこと」がだいぶ変わってきてもいます。

ちなみに日経パソコンは定期購読のみで、書店では売っていません。
興味のある方は、図書館などで探してみてください。
posted by 土屋和人 at 07:04| Comment(0) | TrackBack(0) | 仕事

2011年05月30日

ミニひと目でわかるExcelビジネス文書作成術

このところ雑誌「日経パソコン」にExcelの記事を書かせてもらったりもしていたのですが、今回、日経BPさんから初めて本を出させていただくことになりました。



えー、要するに、久しぶりの更新がまた宣伝です(^^;)。どうもすいません。

Excel作例集のようなものは、これまでにも技術評論社さんで何冊か出させていただいています。
それらに比べると、この本で紹介している作例の数はやや少なめですが、その分、作成手順を詳しく解説しています。

ここで紹介している作例そのものが必要でない人でも、解説している内容はいろいろな文書に応用できると思います。
posted by 土屋和人 at 08:50| Comment(0) | TrackBack(2) | 仕事

2011年03月16日

状況

フリーの身としては、こういう状況で、とりあえず現在、やるべきことがあるのはありがたいと思っています。

自宅作業なので、都心のオフィスに通勤されている方に比べれば、それほど苦労はしていないといえるでしょう。
ただ、計画停電がどのように実行されるかが非常にわかりづらく、集中して仕事をできる環境にないことは確かです。

また、プライベートでも、現在東北関連で、非常に心配していることがいくつかあります。

決して余裕はありませんでしたが、取り立てて何事もなく過ごせていた、変わりばえのしない日々が懐かしく思えます。

皆様の(特に被災地の方々の)日常が一日も早く戻ってくることを祈ります。
posted by 土屋和人 at 06:23| Comment(0) | TrackBack(0) | 日常

2011年02月12日

関数の引数の省略 その2

ここでは関数の引数を「カンマ付きで省略すると0(または空白文字列)と見なされる」と書きましたが、どの関数についてもそうなるかのように言い切ってしまうのはまずかった、と気が付きました。

たとえばOFFSET関数で、第4引数「高さ」と第5引数「幅」にはそれぞれ1以上の整数を指定することになっており、0を指定すると#REF!エラーになります。
しかし、「高さ」の指定を省略してカンマを付け、「幅」を指定した場合は、0ではなく「現在の高さを維持する」という指定になります。

また、データベース関数のDCOUNTとDCOUNTAの第2引数「フィールド」では、通常は集計対象の列を指定しますが、この引数を省略すると(第3引数「条件」は必須)、条件に該当するレコード数が求められます。

このほか、統計関数や財務関数にも、途中の引数を省略すると、省略したなりの意味を持つものがあるようです。

結局、省略した引数が0と見なされるか空白文字列と見なされるか、それとも省略した場合の動作が設定されているのかは、それぞれの関数の仕様によって異なる、という当たり前といえば当たり前の結論なのですが……。
posted by 土屋和人 at 09:13| Comment(0) | TrackBack(0) | Excel

2011年02月11日

ThisDocument

ExcelのVBAでは、ApplicationオブジェクトにThisWorkbookプロパティというのがあり、そのコードを含むブックを表すWorkbookオブジェクトを返します。

WordのVBAでもたぶん同じようなものだろうと思い、よく調べもせずThisDocumentというキーワードを使ってコードを書いてみたところ、やはり同じようにコードを含むDocumentオブジェクトが取得できました。
それで、これもやはりApplicationオブジェクトのプロパティなのだろうと思い込んでいたのですが、最近いただいた問い合わせをきっかけに調べ直してみたところ、WordのApplication(Global)オブジェクトにはそんなプロパティはない(もちろんメソッドもない)、ということがわかりました。

続きを読む
posted by 土屋和人 at 13:19| Comment(0) | TrackBack(0) | Word

2011年02月02日

Amazonの「?」

以前、Amazonに新品の在庫がなくて中古品を定価の1.5倍ぐらいで買ったらすぐまた新品が出てた、というコメントをいただいたこの本ですが、どうやら今度こそ本当に在庫が切れて(要するに絶版^^;)、中古品が6000円ぐらいになっているようですね。



Amazonといえば、以前にもこんな事件がありましたが、この『Excel VBAパーフェクトマスター』でもすでに中古品が出品されていて、しかもまだ新品が出たばかりなのに値段が1万円以上って……(^^;)

それにしてもAmazonはよくよくこの本のことが嫌いらしく、よく見たらページ数も「97ページ」になってました。(本当はその後に「9」が付きます。念のため)
本当に97ページで3360円だったら、一体誰が買うんでしょうか?

さすがにすぐに修正されるのではないかと思う(中古品のほうは。ページ数のほうは……あまり期待できないかも)ので、ご覧いただくならお早めに。

※追記
同じ日の16時頃に見たら、中古本の情報はもうなくなってました。
せっかくネタにしたのに、まさかこんなに早いとは……(^^;)
posted by 土屋和人 at 06:51| Comment(0) | TrackBack(0) | 日常