Excelいじりなんか、えらく面倒なExcelのお絵かきが必要になって、それは四角の中にテキストを入れて、場合によってはその四角に別の四角がくっついて(しかも、それにもテキストがある)いて、しかも全部で四角が200個くらいある。それだけあると、人間がうまいこと並べてやらなければだめだが、かといってすべて手作業するのはいやなこった。いうわけで、あまり気はすすまないが、マクロを使って、別のシートの表に埋まっているテキストを取り出して四角を配置しておくものを作った。ときどきうまく動き、ときどきうまく動かない。'思い出して書いているので嘘もあるはず。IfNext良くわかったが、MSDNのOffice2003のドキュメントがかすなのは、コレクション、オブジェクト、メソッド、プロパティという項目立てになっていて、それはまあそれで良いとしても、オブジェクトやコレクションからメソッドやプロパティがリンクされていないことだ。そのため、どのオブジェクトで何が使えるかさっぱりわからない。一部についてはインテリセンスが効くから良いとしても、Selectionなんかはインテリセンスが効かないので全然だ。うまく動くときは、上でWorkSheet(5)としているシートがフォアグラウンドとして表示されている時だということがわかり、しかし、なぜそうでなければうまく動かないかわからなかった。これを書いていてわかったが、Selectionは移出されたオブジェクトではなく、デフォルトオブジェクトであるApplicationのプロパティで、アクティブなウィンドウの選択を返すから、うまく動いたり(WorkSheet(5)がフォアグラウンドシート)、動かなかったり(WorkSheet(5)以外のシートがフォアグラウンドシート)するからなのか。考えてみれば、それはそうだな、と納得できるが、とても不思議だった。いうか、もう少し手を入れれば、ほとんど人手の介在は不要にできそうだ。OOOあらためて上のリストを見ると気に食わない。'思い出して書いているので嘘もあるはず。Functionで、ここまでは良いとして、次の修正をするかどうかが思案どころだ。おれは、平気だし、むしろ、次のようにしたほうが良いと思うが、純粋主義者であれば、CreateRectがそれ以外のロールを果たすことに嫌な匂いを嗅ぐと想像できるからだ。Function」だとEmptyが返る事とかが気になりました。<br>あと、dstも引数で受け取る方が良さそう。02:03)どうもありがとうございます。>Empty<br>修正します。<br>引数は、ケースバイケースで、これはそういうケースの例ということで。02:06)ああ、dstってWorkSeets(5)のほうじゃなくてですね。<br>これも修正します。ありがとうございます。00:32)VBAの等価演算子は「==」ではなく「=」だと言う事が、ツッコミのメインでした。判り難くてすみません。<br>#「次のようにしたほうが良いと思うが」なので、実際に試されたわけではない様ですし。<br>#この記事を参照した人がそのままコピーすれば、構文チェックで赤くなって気付くと思いますし。<br><br>以下、私なりに整理したものを書いてみます(変数名はそのまま使用させていただきました)。Function<br><br>私がVBAのコード作成時に注意する点もいくつか書いておきます。02:51)どうもありがとうございます。<br>確かに、==はまずいですね。<br>それに、FILEさんの例のCharactersまでWithにするほうがきれいだし、効率的ですね。あと、「自動構文チェック」をOFFというのは試したことがないので、今度、やってみます。<br>逆に、ネストを深くするより、先頭で条件に合わないのは返すのが良いと思います。<br>つまり、関数の構成は<br>・初期化<br>・条件に合わないものを返したり弾いたり飛ばしたり<br>・本当の処理<br>・後処理<br>という感じにして、条件に合わないものを最後まで引っ張って、肝心な処理がネストの奥に行ったり、別関数になるのを避けるようにする、「いきなりストリップ書法」が好みです。