Quantcast
Channel: OKWAVE 最新質問(Visual Basic/257)【本日】
Viewing all articles
Browse latest Browse all 6510

SGN関数を使った2つの動的配列の初期化判定

$
0
0
Excelのvbaにおいて2つの動的配列を同時に初期化(redimされているか)どうか判定するときに sgn関数を使うとおかしな現象が起こります。 a,bの動的配列を2つ宣言して、redimを行う前あるいはeraseで開放した後に sgn(a)=0とsgn(b)=0の結果を評価すると共にTrueが返ってきますが (Sgn(a) = 0) And (Sgn(b) = 0) を評価すると なぜかFALSEが返ってきます。 (True And True = FALSEとかいう矛盾した結果が返ってくる) sgn(a)=0、sgn(b)=0の結果をそれぞれAbool,Bboolというbool型変数に格納してから Abool And Bboolとすれば、正しい評価は可能なのですが、 (Sgn(a) = 0) And (Sgn(b) = 0) がFALSEになる理由がわかりません。 この現象が起こる理由を押して下さい。 この現象が発生しているパソコンは2台あります。 OSはWindows 7の32bitと64bit Excel 2013 32bit (2台とも) 以下はサンプルコードです。 Public Sub test() Dim a() As Integer Dim b() As Integer If Sgn(a) = 0 Then MsgBox "配列aは初期化されていません。" If Sgn(b) = 0 Then MsgBox "配列bは初期化されていません。" If (Sgn(a) = 0) And (Sgn(b) = 0) Then MsgBox "配列a,bは両方共初期化されていません。" Else MsgBox "配列a,bはいずれかが初期化されています。" End If End Sub

Viewing all articles
Browse latest Browse all 6510

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>