3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

一行の中に2回イコール「 = 」を書くと – Excel VBA

2011年12月28日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

エクセルマクロ・VBA達人養成塾 小川です。

キューバ旅行記、その69です。

ビニャーレス→ハバナ→バラデロ、と移動中。

ハバナのバスターミナルで、一服しています。

エクセルマクロ達人養成塾塾長ブログ-Lonely Planetと炭酸水、iPhone。
英語版旅行ガイド「Lonely Planet」と炭酸水、iPhone。

iPhoneは、携帯版のスペイン語辞書入れと、動画撮影ツールとして持って行きました。
ストラップもかけられないし、タイミング悪く手を滑らせたらなくなってしまうようなものですが..。よく、なくならなかったものです。

エクセルマクロ達人養成塾塾長ブログ-どこにでもある、Netsleのアイスの広告
キューバ中、どこにでもある、Netsleのアイスの広告。

エクセルマクロ達人養成塾塾長ブログ-バスターミナルにあった、ルートと価格の表。
バスターミナルの電光掲示板で表示されていた、ルートと価格の表。

エクセルマクロ達人養成塾塾長ブログ-現地通貨。1ペソと、3ペソ。
現地通貨を撮ってみました。1ペソと、3ペソ。

エクセルマクロ達人養成塾塾長ブログ-カフェテリアの入り口をパチリ。
ということで、バスの出発の時間。記念に、カフェテリアの入り口をパチリ。昨日の破れた窓は、この階段を登ったところにあるものです。あれから3ヶ月経っていますが、たぶん、今でも破れたままでしょう… (^^;

塾長のキューバ旅行記、最初から読みたい方はこちらから


一行の中に2回イコール「 = 」を書くと?

昨日の続きです。

昨日のブログ『「If True Then」なんて書き方でテスト』

超初心者が、最初のうちまれにやるミスであり、かつ、超初心者には極めて解説しにくいものをご紹介。

VBAを書き慣れていない人が、たまにこんな書き間違いをしてしまいます。

例えば、セルA1にあらかじめ、3が入っているとき。
セルA2に、セルA1の値に5を足した数を入力しようとします。

以下の書き方なら、問題ありません。

Sub nantokakantokaOK()
Range(“A2”).Value = Range(“A1”).Value + 5

End Sub

ところが、慣れなくていろいろパニクってしまい、こんな書き方になる。

Sub nantokakantokaNG()
Range(“A2”).Value = Range(“A1”).Value + 5 = 8

End Sub

このマクロは、実行すると、セルA2に「8」ではなく、「TRUE」と書き込みます。
(セルA1に3が入っていた場合のことです。もしそうでなければ、「FALSE」と書き込まれます)

で。

パニクるんですね (^^;

解説すると。

Range(“A2”).Value = Range(“A1”).Value + 5 = 8

の、左側のイコール「 = 」は、プロパティを設定します、という意味。
右側のイコール「 = 」は、

『もし、セルA1の値に5を足したら8になるなら、「True」、そうでなければ、「False」を返す』

という意味の、比較演算子と解釈されます。(If Range(“A1”).Value + 5 = 8 Then … と書いた場合と同じです )

てことで。

式「Range(“A1”).Value + 5 = 8」は、「True」か「False」を返します。

「True」を返した場合なら、

Range(“A2”).Value = True

ってことですから、セルA2には「True」が入る。

「False」を返した場合なら、

Range(“A2”).Value = False

ってことですから、セルA2には「False」が入る。

ってことです。

そんなわけで。

Sub nantokakantokaNG()
Range(“A2”).Value = Range(“A1”).Value + 5 = 8

End Sub

なんてマクロを実行すると、エクセルのセルには、「TRUE」とか「FALSE」とかの値が入る、ということでした。

「参考にしてください」

なんて言われても、実際にこういうミスをしてしまう人には意味不明も甚だしいレベルの内容かもしれませんが。。。

参考にしてください。

あと、VBを教える人も、参考にしてください。

そもそも、VBが、比較演算子は、PerlとかPHPとかみたいに「 == 」と書くとか、「 eq 」と書くとか、そういう仕様になっていれば、
書き間違えから生じるこんなややこしい事態は回避できたはずですけどね…。

てことで。

明日は、この話の続きとして、以前ある受講生のフォローをしたときに書いたマクロを紹介します。

見慣れない人には、若干ヘンタイかもしれません。。が、おもしろいと思える人にはおもしろいかも (^^;

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド