Excel VBA質問箱 IV

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

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


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

【21585】orの使い方が・・・ pi 05/1/24(月) 17:21 質問[未読]
【21586】Re:orの使い方が・・・ IROC 05/1/24(月) 17:37 回答[未読]
【21587】Re:orの使い方が・・・ Jaka 05/1/24(月) 17:37 回答[未読]
【21588】Re:orの使い方が・・・ pi 05/1/24(月) 17:40 お礼[未読]
【21591】Re:orの使い方が・・・ ichinose 05/1/24(月) 17:47 発言[未読]
【21593】Re:orの使い方が・・・ Jaka 05/1/24(月) 18:04 発言[未読]
【21590】Re:orの使い方が・・・ りすりす 05/1/24(月) 17:42 回答[未読]
【21592】Re:orの使い方が・・・ pi 05/1/24(月) 17:56 発言[未読]
【21595】Re:orの使い方が・・・ りすりす 05/1/24(月) 18:22 回答[未読]
【21618】Re:orの使い方が・・・ pi 05/1/25(火) 8:12 質問[未読]
【21619】Re:orの使い方が・・・ Jaka 05/1/25(火) 9:11 回答[未読]
【21640】Re:orの使い方が・・・ pi 05/1/25(火) 17:25 お礼[未読]

【21585】orの使い方が・・・
質問  pi  - 05/1/24(月) 17:21 -

引用なし
パスワード
   何度も質問して、申し訳ありません・・・

Option Explicit
Dim a As Integer
Sub Macro1()
a = 7
If a = 1 Or 7 Then
Range("A1") = "1"
Else
Range("A1") = "0"
End If
End Sub

これで、If a = 1 Or 7 Then のところを、
or を間にいれて書き換えたいのですが、どうしても
"1"と出てきてしまいます。
どうすればいいのでしょうか?

【21586】Re:orの使い方が・・・
回答  IROC  - 05/1/24(月) 17:37 -

引用なし
パスワード
   If a = 1 Or a = 7 Then

【21587】Re:orの使い方が・・・
回答  Jaka  - 05/1/24(月) 17:37 -

引用なし
パスワード
   こんにちは。
これだとVBではろくに動きません。

>If a = 1 Or 7 Then
   ↓
>If a = 1 Or a = 7 Then

【21588】Re:orの使い方が・・・
お礼  pi  - 05/1/24(月) 17:40 -

引用なし
パスワード
   なるほど・・・案外単純なことだったんですね。
IROCさん Jakaさん 有難うございました。

【21590】Re:orの使い方が・・・
回答  りすりす  - 05/1/24(月) 17:42 -

引用なし
パスワード
   ▼pi さん:
>何度も質問して、申し訳ありません・・・
>
>Option Explicit
>Dim a As Integer
>Sub Macro1()
>a = 7
>If a = 1 Or 7 Then
>Range("A1") = "1"
>Else
>Range("A1") = "0"
>End If
>End Sub
>
>これで、If a = 1 Or 7 Then のところを、
>or を間にいれて書き換えたいのですが、どうしても
>"1"と出てきてしまいます。
>どうすればいいのでしょうか?

if は
基本的にTureかFalseを判断するだけです
数字を入れると0(False)か、0でないか(True)として判定します(たぶん)

>If a = 1 Or 7 Then
これは、常にTrueなので なにをいれようが、1が返ってきます

きちんと
If a = 1 Or a = 7 Then
と書きましょう
If (a = 1) Or (a = 7) Then
かっこをつけたほうがみやすいかもしれないですね。

【21591】Re:orの使い方が・・・
発言  ichinose  - 05/1/24(月) 17:47 -

引用なし
パスワード
   piさん、Jaka さん、IROCさん、こんばんは。

>こんにちは。
>これだとVBではろくに動きません。
>
>>If a = 1 Or 7 Then
でも、たまにこういう記述されている方を見かけますよね?
私もできるのかと思ってました。
うる覚えなんですが、インタープリタは、
「Falseか、Falseではないか」という判断しかしていないのでは
ないでしょうか?
If a = 1 Or 7 Then
の場合、

7は、Falseではない----True

となってしまう。

よって、aがなんであっても

Range("A1") = "1"

を実行してしまう。

だったと思いましたが・・・・。

【21592】Re:orの使い方が・・・
発言  pi  - 05/1/24(月) 17:56 -

引用なし
パスワード
   なるほど・・・
If a = 1 Or 7 Then は
a は、1か7か で聞いたつもりですが、
つまりこれは
If a = 1 Or 7 = 7 Then
と聞いているようなもの。 ということですね・・・

【21593】Re:orの使い方が・・・
発言  Jaka  - 05/1/24(月) 18:04 -

引用なし
パスワード
   こんにちは。
もう帰りますので、簡単に。

>>>If a = 1 Or 7 Then
コボルでは、こう書きますけど、他言語はわかりません。

>よって、aがなんであっても
>
>Range("A1") = "1"
>
>を実行してしまう。

はい。
判断材料は右辺のTrueだけです。
左辺は、orですからどうでも良いことになりますね。

【21595】Re:orの使い方が・・・
回答  りすりす  - 05/1/24(月) 18:22 -

引用なし
パスワード
   ▼pi さん:
>なるほど・・・
>If a = 1 Or 7 Then は
>a は、1か7か で聞いたつもりですが、
>つまりこれは
>If a = 1 Or 7 = 7 Then
>と聞いているようなもの。 ということですね・・・
正確には
If a = 1 Or 7 <> 0 Then
または
If a = 1 Or CBool(7) Then
と解釈されます。

C言語では、そういう感じですから、
おそらくVBも同じでしょう(たぶん)

【21618】Re:orの使い方が・・・
質問  pi  - 05/1/25(火) 8:12 -

引用なし
パスワード
   追加で申し訳ないのですが・・

option explicit
Dim a As Integer

sub macro1 ()
a = rnd * 10
select case a
case 1

の、caseにはorは使えないんですか?

【21619】Re:orの使い方が・・・
回答  Jaka  - 05/1/25(火) 9:11 -

引用なし
パスワード
   おはようございます。

>sub macro1 ()
>a = rnd * 10
>select case a
>case 1
>
>の、caseにはorは使えないんですか?

case 1,7 で、orと同じになります。
ヘルプに載っていると思いますから、1度見てみてください。

【21640】Re:orの使い方が・・・
お礼  pi  - 05/1/25(火) 17:25 -

引用なし
パスワード
   ヘルプを見てみましたが、
検索したら、一番先頭に出てきました。
申し分けないです・・・

ありがとうございました。

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