Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3629 / 13644 ツリー ←次へ | 前へ→

【61061】Mid使用について なぜ?? 09/4/7(火) 21:15 質問[未読]
【61062】Re:Mid使用について kanabun 09/4/7(火) 21:30 発言[未読]
【61064】Re:Mid使用について なぜ?? 09/4/7(火) 22:11 お礼[未読]
【61065】Re:Mid使用について ichinose 09/4/7(火) 22:16 発言[未読]

【61061】Mid使用について
質問  なぜ??  - 09/4/7(火) 21:15 -

引用なし
パスワード
   みなさん、こんばんは。
ゆっくりながらもVBAを勉強しているのですが、
下記がNOの結果になる理由がわかりません。

Cells(7, 1)には333
Cells(7, 2)には1333
が入っています。
msgboxでみると同じ333を表示するのですが
なぜNO、イコールではないという結果になるのでしょうか?
簡単なコードなのに間違えが見えません。
宜しくお願い致します。


Sub てすと()
Dim a As Variant
Dim b As Variant

a = Cells(7, 1)
b = Mid(Cells(7, 2), 2)

'MsgBox a
'MsgBox b

If a = b Then
 
  MsgBox "OK"
Else
  MsgBox "NO"
 
End If

End Sub

【61062】Re:Mid使用について
発言  kanabun  - 09/4/7(火) 21:30 -

引用なし
パスワード
   ▼なぜ?? さん:

>Cells(7, 1)には333
>Cells(7, 2)には1333
>が入っています。
>msgboxでみると同じ333を表示するのですが
>なぜNO、イコールではないという結果になるのでしょうか?

>Sub てすと()
>Dim a As Variant
>Dim b As Variant
>
>a = Cells(7, 1)
>b = Mid(Cells(7, 2), 2)
>
>'MsgBox a
>'MsgBox b


Variant型変数 a と b のデータ型は代入された値により変化します。
今回 aとb のデータ型が違うからでしょう

上の コメントアウトしているMsgBox を

 MsgBox a, , TypeName(a)
 MsgBox b, , TypeName(b)

として確認してみてください。

【61064】Re:Mid使用について
お礼  なぜ??  - 09/4/7(火) 22:11 -

引用なし
パスワード
   ▼kanabun さん:
早々にお返事を頂きありがとうございました。
データ型は大事なんですね。
勉強になりました。


>▼なぜ?? さん:
>
>>Cells(7, 1)には333
>>Cells(7, 2)には1333
>>が入っています。
>>msgboxでみると同じ333を表示するのですが
>>なぜNO、イコールではないという結果になるのでしょうか?
>
>>Sub てすと()
>>Dim a As Variant
>>Dim b As Variant
>>
>>a = Cells(7, 1)
>>b = Mid(Cells(7, 2), 2)
>>
>>'MsgBox a
>>'MsgBox b
>
>
>Variant型変数 a と b のデータ型は代入された値により変化します。
>今回 aとb のデータ型が違うからでしょう
>
>上の コメントアウトしているMsgBox を
>
> MsgBox a, , TypeName(a)
> MsgBox b, , TypeName(b)
>
>として確認してみてください。

【61065】Re:Mid使用について
発言  ichinose  - 09/4/7(火) 22:16 -

引用なし
パスワード
   こんばんは。


>早々にお返事を頂きありがとうございました。
>データ型は大事なんですね。
>勉強になりました。
因みに

Sub てすと()
Dim a As Double
Dim b As Variant

a = Cells(7, 1)
b = Mid(Cells(7, 2), 2)

'MsgBox a
'MsgBox b

If a = b Then

  MsgBox "OK"
Else
  MsgBox "NO"
 
End If
MsgBox a, , TypeName(a)
MsgBox b, , TypeName(b)
End Sub


とするとデータ型が違うのにちゃんと OKと表示されます。

また、混乱させちゃうかな?

3629 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free