エクセルマクロ オンライン講座コメント紹介

コメント紹介
   └ エクセルマクロ・VBA基礎編フォローアップ
       └ 文字列を様々に解析して条件分岐

文字列を様々に解析して条件分岐

[7764] 2017-02-28 16:04:47 新見陽子さんからの投稿です。

問題[2]で、>0を入れずに以下のように作成しても、マクロが実行されたのですが、なぜでしょうか?
マクロが気を利かせてくれたのでしょうか?これでも不都合はないですか?

Sub miyakojima()
    Dim gyo
    For gyo = 2 To 22
        If InStr(Range("B" & gyo).Value, "都島") Then
            Range("J" & gyo).Value = "都島グループです"
        End If
    Next
End Sub

 


[7767] 2017-02-28 17:35:39 小川慶一さんからの投稿です。

新見陽子 さん:

>マクロが気を利かせてくれたのでしょうか?

結論から言うとそういうことです。
マクロは、If文の条件式で得られた値が 0 のときは False、 0 以外の数値のときは True と再解釈します。

ただし...。

>これでも不都合はないですか?

こういう「マクロが気を利かせてしてくれる再解釈」は、今後も同じ再解釈の結果になると約束されているわけではありません。
(エクセルやVBAのバージョンによっては、逆の解釈になるかもしれません)

ですので、条件式が True か False という値を返すようなプログラムを書くという基本的な作法を守るように意識しましょう。

まずは、以上のとおりです。
もし何かあればまたご質問ください。


>問題[2]で、>0を入れずに以下のように作成しても、マクロが実行されたのですが、なぜでしょうか?
>マクロが気を利かせてくれたのでしょうか?これでも不都合はないですか?
>
>
Sub miyakojima()
>    Dim gyo
>    For gyo = 2 To 22
>        If InStr(Range("B" & gyo).Value, "都島") Then
>            Range("J" & gyo).Value = "都島グループです"
>        End If
>    Next
>End Sub

 


まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ