VBメモ:XORの活用法

 熟練PGでも意外に知らない/気づいていない人が多い、ビット演算子 Xor の活用法。
 Xorを使えば、Boolean型(C#やJAVAだとbool型)を1行で反転させることが出来る。


Dim blnA=True

blnA=blnA Xor True

 この場合、blnAはFalseになる。


XORの「両方とも0の場合にのみ1になる」という性質を利用している。XOR演算子の詳細な解説については、他の専門サイトに譲ろう。
 

 具体的な活用法としては、例えばこんなのがある。

Windows Formでのラジオボタンの切り替え(VB2005):

Public Class Form1

     Private Sub rdo七瀬_CheckedChanged(ByVal sender As System.Object,  _
                                    ByVal
e As System.EventArgs) Handles rdo
七瀬.CheckedChanged

        Me.rdo風子.Checked = Me.rdo七瀬.Checked Xor True

    End Sub

     Private Sub rdo風子_CheckedChanged(ByVal sender As System.Object,  _
                                     ByVal
e As System.EventArgs) Handles rdo
風子.CheckedChanged

        Me.rdo七瀬.Checked = Me.rdo風子.Checked Xor True

    End Sub

End Class


実行結果

↓クリックすると切り替わる。


 このように、IF文を使わなくても、チェックの切り替えが出来る。ラジオボタン2個だと大したこと無いが、チェックボックスの10個20個一斉切り替えとかなってくると、結構ありがたみがわかるだろう。
 無論、C#やJAVAでも同じ要領でコードを書くことが出来る。


 VBで業務アプリをやっていると、ビット演算なんて滅多に使うことはない。これは数少ない活用法といえるだろう。

-----

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

sophia(rc)
2006年09月04日 16:26
こんな書き方でもビット反転できるようです。

blnA=not blnA

試したのは Excel2003 VBA ですが。

この記事へのトラックバック