こんばんは
以下のマクロにて、最初は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
A 回答 (5件)
- 最新から表示
- 回答順に表示
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=が必要なケース。
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」になることはないので、「偶数」と表示されることはなく、常に「奇数」と表示されるのです。
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
か?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- JavaScript 助けてください‼︎ javascriptで質問があります。 配列を定義して、 29342、45342 3 2022/06/26 22:06
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- 政治 結婚は掛け算ですよね? 5 2022/12/02 09:40
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelVBAでPDFを閉じるソース
-
一つのTeratermのマクロで複数...
-
EXCELのVBAでRange("A1:C4")を...
-
エクセルに張り付けた写真のフ...
-
Excel VBAからAccessマクロを実...
-
#defineの定数を文字列として読...
-
ソース内の行末に\\
-
ExcelのVBA。public変数の値が...
-
エクセルで別のセルにあるふり...
-
ピボットテーブルでの毎回可変...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
エクセルのマクロについて教え...
-
エクセルのマクロをセルの値に...
-
EXCELマクロでのThisisWor...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
他人が作ったマクロの理解
-
ExcelVBAでPDFを閉じるソース
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
TeraTermマクロの文字列結合
-
PDF出力マクロについて。マクロ...
-
#defineの定数を文字列として読...
-
エクセルのマクロをセルの値に...
-
wordを起動した際に特定のペー...
おすすめ情報