• 締切済み

偶数、奇数の判定について

こんばんは 以下のマクロにて、最初はx=1なので「奇数」、次はx=x+1で2になっているので「偶数」と表示されるように作ったつもりなのですが、何故か全部「奇数」の表示になってしまいます。 どこがおかしいのか分からないので、教えて頂きたいです。 Sub macro() Dim x, y As Integer x = 1 Do y = x Mod 2 Select Case y Case y = 0 MsgBox "偶数" Case y = 1 MsgBox "奇数" End Select x = x + 1 Loop Until x = 10 End Sub

noname#146604
noname#146604

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

Select Case y としたら、Case文のCase の直後ではその取りうる「値だけ」を指定するのだ。 IF分の書き方とは違う。 ーー 解説書のCaseの個所を見てご覧。 改めて y=0 などとしては、エラーにならなくても、質問のように混乱するよ。 ーー 参考 別件だが Sub test01() y = Cells(1, "A") 'If y = 0 Or 1 Then 'NO If y = 0 Or y = 1 Then 'OK MsgBox "AA" End If End Sub はよく間違うケース。A1セルに、3と入れて、2,3行目のどちらかをコメントアウトを入れ替えてやってみてご覧。 こちらは y=1のy=が必要なケース。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

case 0 は、「y=0のとき」 case 1 は、「y=1のとき」 という意味になって、意図した動作をすると思います。 case y=0 は、「y=y=0のとき」、という意味になり、 case y=1 は、「y=y=1のとき」、という意味になって、こういう書き方もあるので、エラーにならないのです。 これらは、論理演算で、「y=y」ならTrue(1)を返し、「y≠y」ならFalse(0)を返すのですが、yとyは常に等しいので、常に「y=y」だから、1を返します。したがって、常に「y=y=1」になり、「y=y=0」になることはないので、「偶数」と表示されることはなく、常に「奇数」と表示されるのです。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.3

Select Case y Case y = 0 MsgBox "偶数" Case y = 1 MsgBox "奇数" End Select は、 Select Case y Case 0 MsgBox "偶数" Case 1 MsgBox "奇数" End Select か?

  • misawajp
  • ベストアンサー率24% (918/3743)
回答No.2

デバッグで どこかで x を表示させて確認してみたら 質問にあるプログラムリストはマクロで使用されているものと同一でしょうか 奇数は9回表示されますか

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> Case y = 0 > Case y = 1 このcaseの使い方が問題です。

関連するQ&A

  • 奇数・偶数の判断 VBA

    Sub Macro1() Dim i As Long i = 1 For i = 1 To 10 If i = ? Then '偶数ならと言うコード MsgBox "偶数です" Else MsgBox "奇数です" End If Next End Sub ここまでは自分で作れたのですが、iが奇数か偶数かを判断するコードがわかりません。 ご教授よろしくお願いします。

  • 偶数/奇数の判定

    任意の整数の偶数/奇数を判定するモジュールを開発しています。 納期は連休明けです。 Public Function a(b)   Select Case b     Case 1       a = True     Case 2       a = False     Case 3       a = True     Case 4       a = False      :     (中略)      :     Case 10000       a = False   End Select End Function 上記のようなプログラムを途中まで書いたところなのですが、コードの行数が長く、どうも効率が悪いような気がしています。 このままでは納期に間に合うか不安です。 効率のよいアルゴリズムをご存知の方、教えてください。 また、現在は、ソースコードをプリントアウトして1行ずつ眼でチェックしていますが、紙を大量に消費しますし、時間もばかになりません。 効率よくバグを検出する方法を教えてください。 連日の深夜残業でかなり参っています。(><)

  • エクセルで偶数か奇数かを調べるにはどうすればいいですか?

    エクセルで関数の入ったセルの答えが偶数か奇数かでセルの色を変えたいのですが、 そんなことはできるのでしょうか? 数値の入ったセルはMOD関数などで偶数or奇数の判断が出来るので、条件付書式で偶数セルと奇数セルの色分けが出来たのですが、 数式の入ったセルの答え(表示されている数値)が偶数か奇数かを判断することができず困っています。 もしかして不可能なことなのでしょうか? どなたかご指導下さい。よろしくおねがいします!

  • excel・VBAで奇数・偶数の分岐がうまくいかない。

    一覧が入っているシートから宛名用のシール印刷をするために、VBAを使用しています。 ラベル印刷は ┏━━━━┓┏━━━━┓ ┃ 奇数 ┃┃ 偶数 ┃ ┗━━━━┛┗━━━━┛ みたいな感じです。 奇数:一覧シートの奇数行 偶数:一覧シートの偶数行 ですが、奇数の方はうまく出るのですが、偶数の方が1つおきになってしまいます。 これのどこが間違っているのでしょうか? Worksheets("Sheet1").Select Last = Cells(1).CurrentRegion.Rows.Count For i = 2 To Last Worksheets("Sheet1").Select Yuubin = Cells(i, 1) Name = Cells(i, 6) Dim AllCount As Integer Worksheets("TEST").Select Kotae = i / 2 Amari = i Mod 2 AllCount = i / 12 If Amari = 0 Then Ichi = (((Kotae - 1) * 9) + 1) - AllCount Cells(Ichi, 2) = "〒" & Left(Yuubin, 3) & "-" & Right(Yuubin, 4) Cells(Ichi + 7, 4) = Name & " 様" ElseIf Amari = 1 Then Ichi = (((Kotae - 1) * 9) + 1) - AllCount Cells(Ichi, 17) = "〒" & Left(Yuubin, 3) & "-" & Right(Yuubin, 4) Cells(Ichi + 7, 19) = Name & " 様" & i End If '奇数偶数分岐 Next ' 全件分終るまで よろしくお願いします。

  • 奇数・偶数の区別をプログラミング

    IF文を使って奇数ならODD、偶数ならEVENと画面に表示されるようなプログラムを組もうとしたのですが、ちょっと分からなくなりました。 write(6,*)"Enter x" read(5,*)x if(???)then write(6,*)"x is ODD" else write(6,*)"x is Even" endif stop end 自分は上記のように考えてみたのですが、???に入れるべきものが分かりません。 2で割って余りが出るなら奇数というのを???に入れるんじゃないかなと思ったのですが、もしそうならどう書けばよいのか。 どなたかご教授ください。 よろしくお願いします。 ちなみに使っているプログラミング言語はFortranです。

  • VBA のメッセージボックスに・・・

    Private Sub CommandButton1_Click() Dim intMsg As Integer Dim x As Double x = Val(Cells(3, 2).Value) / Val(Cells(2, 2).Value) ^ 2 Cells(2, 5) = x intMsg = MsgBox("指数は&x&" & vbCrLf & "&z&です。") Select Case x Case 0 To 18 MsgBox "やせぎみ" Case 19 To 25 MsgBox "普通" Case 26 To 30 MsgBox "太り気味" Case Else MsgBox "危険" End Select End Sub ってプログラムを組んだのですが メッセージボックスに結果が表示されません。 計算して出た値を、メッセージボックス内のxとzで表示させたいのですが・・・ &ではさむ?だけではだめなんですか?

  • Select Caseステートメント 「Is」

    VBAについて質問です。 http://excelvba.pc-users.net/fol6/6_2.html の Sub test() Dim intPoint As Integer intPoint = InputBox("点数を入力してください") Select Case intPoint Case Is >= 80 MsgBox "優です。" Case Is >= 70 MsgBox "良です。" Case Is >= 60 MsgBox "可です。" Case Else MsgBox "再テストです。" End Select End Sub は、 なぜ Sub test2() Dim intPoint As Integer intPoint = 75 Select Case intPoint Case intPoint >= 80 MsgBox "優です。" Case intPoint >= 70 MsgBox "良です。" Case intPoint >= 60 MsgBox "可です。" Case Else MsgBox "再テストです。" End Select End Sub では、だめなのでしょうか? test2を実行すると、 Case Elseの MsgBox "再テストです。" になってしまいます。 本当は、"良です。"が正しいのに。 testをF8でステップインしながら実行した時に、 「Case Is >= 80」 の来た時に、isにカーソルをあてても、InputBoxで入力した数値が表示されません。 なぜ、この場合、Case intPoint >= 80 ではダメなのか理由をご教授ください。ご回答よろしくお願いします。

  • エクセル2010のコマンドボタンついて

    MouseDownイベントでループ(Doなど)をさせた後 MouseUpイベントでStopさせるコードを作りましたが MouseUpイベントまで行かずずっとループしてしまいます (押されている間はボタンが凹んでいますが このコードにすると凹まず中断しないと 動かせないようになってしまいます) 何が原因がわからないので回答お願いします 下はコードです Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Select Case Button Case 1 Range("A1") = 1 Case 2 Range("A1") = 3 End Select Do Range("A1") = Range("A1") + Range("A1") Loop End Sub Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Stop End Sub (Select Case Button Case 1...にしても変わりませんでした)

  • Select Caseで条件が複数の場合

    ifではなくSelect Case で表現するにはどうすればいいでしょうか? Sub Macro1() ひらがな = "い" カタカナ = "イ" Select Case ひらがな Case "あ" Select Case カタカナ Case "ア" MsgBox "ひらがな = ""あ""カタカナ = ""ア""です" End Select End Select Select Case ひらがな Case "い" Select Case カタカナ Case "イ" MsgBox "ひらがな = ""い""カタカナ = ""イ""です" End Select End Select End Sub この場合あ~おまでの条件を設定したい場合どのように書けばいいのでしょうか? またひらがな = "あ"、カタカナ = "イ"の場合はスルーしたいです。 なにか効率のいい方法はありますでしょうか? IFの方が書き方としては正しいのでしょうか? よろしくお願い致します。

  • if文を使わずに奇数・偶数を判断

    はじめまして。C言語解説サイトを巡ってみたのですが、if文無しの奇数偶数判断にまで辿りつかず頭を抱えています。 任意の数字を(指定回数分)打ち込み、奇数だった場合のみ加算し合計を表示するというプログラムを作成したいのですが色々と規制がかかっており、if文・switch文は使用不可/ループも1回のみとなっています。 if文を使えれば x%2 == 1 で奇数と判断できるのですが・・・。 ■ if文を使わず奇数・偶数かを判断→加算 の流れ を是非教えて頂きたいです。お時間ありましたらご教授よろしくお願い致します。