<?xml version="1.0" encoding="UTF-8" ?>
<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom">
	<generator uri="http://nucleuscms.org/" version="Nucleus CMS v3.31SP1-kes">Nucleus CMS v3.31SP1-kes</generator>

	<id>http://fireball.loafer.jp/kes/</id>
	<link rel="self" type="application/atom+xml" href="http://fireball.loafer.jp/kes/atom.xml" />
	<link rel="related" type="text/html" href="http://fireball.loafer.jp/" />
	<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/" />

	<rights>© 2008 Project Loafer/Project Fireball and all blog writers.</rights>

	<title>Entering Passive Mode</title>
	<subtitle>やる気のない受け身なブログ。実験場。</subtitle>

	<updated>2009-03-17T00:25:41+09:00</updated>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
では、続き。
</p>
<p>
<dfn>InputBox</dfn> 関数のマニュアルのミスとは、キャンセルされた場合に返す値である。
</p>
<p>
実際には、<dfn>InputBox</dfn> 関数でキャンセルすると、長さ 0 の文字列 (<code>""</code>) ではなく、<dfn>vbNullString</dfn> が返る。
この、<dfn>vbNullString</dfn> は、<code>""</code> とは異なる値である。
</p>
<p>
<dfn>InputBox</dfn> 関数で OK を押した場合、テキストボックスの内容が戻り値となる。
テキストボックスが空の場合は <code>""</code> が返るので、キャンセルの <dfn>vbNullString</dfn> と区別することができる。
</p>
<p>
ただ、1 つ大きな問題がある。
<dfn>vbNullString</dfn> と <code>""</code> をどうやって区別すれば良いのか。
</p>
<ul>
<li><code>vbNullString = ""</code> は <dfn>True</dfn></li>
<li><code>StrComp(vbNullString, "")</code> は 0</li>
<li><code>Len(vbNullString)</code> も <code>Len("")</code> は 0</li>
</ul>
<p>
困ったことに、VBA の一般的な方法では、上記を区別するのは困難なので、特別な方法を使う必要がある。
</p>
<a href="http://fireball.loafer.jp/kes/vba/vba-nullstring-vs-emptystring.html">続きを読む</a>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/vba-nullstring-vs-emptystring.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/vba-nullstring-vs-emptystring.html" />
		<published>2009-03-17T00:25:41+09:00</published>
		<title type="html"><![CDATA[vbNullString と 空文字列 ""]]></title>
		<updated>2009-03-17T00:25:41+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
VB(A) の中でも、不思議な仕様なのが InputBox 関数だ。
</p>
<p>
この関数は、一行入力のテキストボックスを持つダイアログボックスを表示し、
利用者に適当なテキストの入力を促す。
見た目が質素なので、その用途は微妙だが、
フォームをいちいち作るのが面倒な時に使うこともある。
</p>
<p>
ダイアログボックスには、OK だけでなくキャンセルボタンもあるので、
利用者はキャンセルを選んで、処理を中止することもできる。
ということは、この関数は入力されたテキストだけでなく、
キャンセルされたかどうかの情報も返さなければならない。
<p>
さて、この関数の戻り値は、String 型である。
他の引数には値を呼び出し側に返すものはなく、
エラーを使ってキャンセルを表す感じでもない。
つまり、戻り値のみで対応しないといけないのだ。
</p>
<p>
どうなっているのか。
</p><a href="http://fireball.loafer.jp/kes/vba/vba-inputbox.html">続きを読む</a>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/vba-inputbox.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/vba-inputbox.html" />
		<published>2009-03-15T01:51:21+09:00</published>
		<title type="html"><![CDATA[InputBox 関数の戻り値]]></title>
		<updated>2009-03-15T01:51:21+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
私にとって、Excel は紙のようなものである。
</p>
<p>
紙には、制限なく素早く自由に文字が書ける強みがあり、Excel には、自由にデータを移動、コピーできる強みがある。
</p>
<p>
考え事をするときは白紙と方眼紙とペンが手放せないのだが、紙に好きに書いて色々考え、頭の整理がついた後は、Excel を起動して区分・分類する癖がある。
</p>
<p>
Excel は表計算ソフトなので、計算用なイメージがあるが、そういった使い方ではなく、単なるメモ用として使っている。
</p>
<p>
それだけなら、別に Excel でなく、メモ帳や付箋ソフトでも良いんじゃないのと思うだろうが、私は VB プログラマなので、Excel に附属している VBA という環境が魅力なのである。
</p>
<p>
Excel をはじめとする Office ソフトには、古くから VBA と呼ばれるプログラミング環境がある。VBA は VB 系の中でも異例で、Office と共に 15 年も生き続けている長寿の言語である。
</p>
<p>
VBA では、アプリケーションの操作を自動化することができる程度にとどまらず、VB 言語を使って、自由にプログラムを書くことができる。
</p>
<p>
プログラムは Excel のデータと一緒にファイルに保管されるため、持ち運びも非常に楽である。Excel の普及率は結構高いので、人に渡す時もあまり苦労せずに済む。
</p>
<p>
そのため、小さな業務の効率化のために、Excel は欠かせないツールとなっている。
</p>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/vba-paper-and-excel.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/vba-paper-and-excel.html" />
		<published>2009-03-13T00:06:35+09:00</published>
		<title type="html"><![CDATA[紙と Excel と VBA]]></title>
		<updated>2009-03-13T00:06:35+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
Windows も 7 が出るとか言ってる時代なのに、
未だに Visual Basic 6 の案件があったりする。
それも、スタンドアロンのアプリケーションで。
</p>
<p>
Excel や Word などの Office 製品のマクロでは、
まだ Visual Basic for Application (VBA) が現役なので、
Visual Basic Classic が廃れたかというとそうではないのだが。
</p>
<p>
VB2 から入った私には付き合いの長い言語であり、愛着もある。
</p>
<p>
業務の関係もあるので、しばらくはぽつぽつ VB の話をしようかな。
</p>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/vba-still-active-vb6.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/vba-still-active-vb6.html" />
		<published>2009-03-09T22:52:17+09:00</published>
		<title type="html"><![CDATA[未だに Visual Basic 6]]></title>
		<updated>2009-03-09T22:52:17+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
さて、仕上げをしよう。
</p>
<p>
アドインは、「アドイン」一覧に表示されるが、<br />
そのときに表示されるタイトルやコメントは修正できる。
</p>
<p>
これらは、アドインを作ってからでも、<br />
ファイルのプロパティから修正できるが、<br />
せっかく Excel を使ってるなら、Excel からやろう。
</p>
<p>
まず、メニュー「ファイル」→「プロパティ」を選ぶ。<br />
ファイルのプロパティの画面が表示されるので、<br />
「ファイルの概要」タブを選び、<br />
タイトルとコメントに入力する。
</p>
<a href="http://fireball.loafer.jp/kes/vba/article_184.html">続きを読む</a>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/article_184.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/article_184.html" />
		<published>2006-06-14T19:43:00+09:00</published>
		<title type="html"><![CDATA[仕上げ]]></title>
		<updated>2006-06-14T19:43:00+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
アドインの場合、メニューへの追加だけでなく、<br />
メニューからの削除まできっちり行わなければならない。
</p>
<p>
Workbook (ThisWorkbook) にはアドイン用のイベントがある。AddinInstall と AddinUninstall だ。
</p>
<p>
アドインが Excel で使用可能になった時点で、<br />
AddinInstall イベントが発生し、アドインを削除した際に、<br />
AddinUninstall イベントが発生する。<br />
Install/Uninstall という名前が示すとおり、<br />
アドインの導入時と導入解除時しか発生しない。
</p>
<a href="http://fireball.loafer.jp/kes/vba/article_183.html">続きを読む</a>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/article_183.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/article_183.html" />
		<published>2006-06-13T21:03:00+09:00</published>
		<title type="html"><![CDATA[アドイン用のイベント]]></title>
		<updated>2006-06-13T21:03:00+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
昨日追加したメニュー項目には、<br />
まだ処理を関連付けていないため、<br />
選んでも何も起こらない。
</p>
<p>
メニューに処理をさせるには 2 種類の方法がある。<br />
ひとつは、CommandBarButton の OnAction プロパティ、<br />
もうひとつは、CommandBarButton の Click イベントだ。
</p>
<p>
前者は、簡単に利用できる手法である。<br />
OnAction プロパティに、マクロの名前を指定すれば<br />
メニューが選択されたときに自動的に呼び出される。
</p>
<a href="http://fireball.loafer.jp/kes/vba/article_182.html">続きを読む</a>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/article_182.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/article_182.html" />
		<published>2006-06-12T19:22:00+09:00</published>
		<title type="html"><![CDATA[メニューのハンドラ]]></title>
		<updated>2006-06-12T19:22:00+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<div>
<a href="http://fireball.loafer.jp/kes?imagepopup=2/2006-06-11-23-30-0.jpg&amp;width=249&amp;height=465&amp;imagetext=%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC" onclick="window.open(this.href,'imagepopup','status=no,toolbar=no,scrollbars=no,resizable=yes,width=249,height=465');return false;" class="thumbnail"><img src="http://media.fireball.loafer.jp/thumbnail/2_2006-06-11-23-30-0.jpg" width="64" height="120" alt="メニュー" title="メニュー" /></a>
</div>
<p>
Excel のメニューは、Office で共通で利用されている、<br />
CommandBar クラスを中核に据える、<br />
複雑なクラス群で構築されている。
</p>
<p>
メニューを操作するためには、<br />
これらのクラスに関する知識が必要だ。
</p>
<p>
では、目標として、ののぐらむの解答用のメニューを、<br />
「ツール」メニューの中に登録することにしよう。
</p>
<p>
ツールメニューは、幾つかのグループに分類されているので、<br />
アドインであるソルバや、ゴールシークなどが含まれる、<br />
3 つめのグループに登録することを目標とする。
</p>
<a href="http://fireball.loafer.jp/kes/vba/article_181.html">続きを読む</a>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/article_181.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/article_181.html" />
		<published>2006-06-11T23:30:00+09:00</published>
		<title type="html"><![CDATA[メニューの登録]]></title>
		<updated>2006-06-11T23:30:00+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
アドインを作るのは非常に簡単だ。<br />
「名前をつけて保存」を選択し、ファイルの種類から、<br />
「Microsoft Office Excel アドイン (*.xla)」を選ぶだけ。
</p>
<p>
ファイルの種類をアドインにすれば、<br />
自動的に AddIns 用のフォルダに移動する。<br />
この場所に保存しておけば、<br />
自動的にアドイン一覧に登録される。
</p>
<p>
導入にもテストにも便利だが、<br />
勝手にフォルダに移動するので、<br />
どこに保存したか忘れないように注意。
</p>
<a href="http://fireball.loafer.jp/kes/vba/article_180.html">続きを読む</a>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/article_180.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/article_180.html" />
		<published>2006-06-10T23:09:00+09:00</published>
		<title type="html"><![CDATA[アドイン化]]></title>
		<updated>2006-06-10T23:09:00+09:00</updated>
	</entry>
	<entry>
		<author>
			<name>kes</name>
			<uri>http://loafer.jp</uri>
		</author>
		<category term="VBA, VB Classic" scheme="http://fireball.loafer.jp/kes/vba/" />
		<content type="html">
<![CDATA[
<p>
さて、アルゴリズムに関してはここまでとしよう。<br />
まだまだやりたいことはあるがきりがない。
</p>
<p>
Nonogram.xls がだいぶ肥大化してきた。<br />
理由は、Excel のファイル形式の制約もあるが、<br />
何といっても VBA コードやパズルの問題などが<br />
すべて同じブックに格納されているからだ。
</p>
<p>
そこで、問題を解くための処理を書いたブックと、<br />
問題だけを格納したブックに分離して管理することにした。<br />
サイズ的にもすっきりしたし、<br />
必要な問題だけを開くことができるようになった。
</p>
<a href="http://fireball.loafer.jp/kes/vba/article_179.html">続きを読む</a>
]]>
		</content>
		<id>http://fireball.loafer.jp/kes/vba/article_179.html</id>
		<link rel="alternate" type="text/html" href="http://fireball.loafer.jp/kes/vba/article_179.html" />
		<published>2006-06-09T20:02:00+09:00</published>
		<title type="html"><![CDATA[ブックの分離]]></title>
		<updated>2006-06-09T20:02:00+09:00</updated>
	</entry>

</feed>
