No.1ベストアンサー
- 回答日時:
こんにちは。
maruru01です。以下のような感じでしょうか。
Dim temp As Variant
temp = Sheets("Sheet1").Range("F5").Value
If IsNumeric(temp) Then
If temp / 2 - Int(temp / 2) = 0 Then
'偶数の場合
マクロA
Else
'奇数の場合
マクロB
End If
Else
'MsgBox "数値でない!"
End If
この回答への補足
ありがとうございました。残念ながらうまくいきません。
下記のようにやってみました。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim temp As Variant
temp = Sheets("Sheet1").Range("F5").Value
If IsNumeric(temp) Then
If temp / 2 - Int(temp / 2) = 0 Then
'偶数の場合
マクロA
Else
'奇数の場合
マクロB
End If
Else
'MsgBox "数値でない!"
End If
End Sub
F5以外のところに入力があった場合にまでマクロが動いてしまいます。あくまでF5に入力されたときに動くようにしたいのです。また、F5を消去してもマクロAが動いてしまいます。どうすればいいのでしょうか?
No.4
- 回答日時:
No.1です。
Worksheet_Changeイベントに記述することを、最初に言ってくれればよかったですね。
対応は、No.2やNo.3の方の通りです。
あと、未入力(消去)された場合は、IsNumericでTrueになってしまうのは、こちらの勘違いでした。
これも、No.3の方の方法で。
あと、偶数・奇数の判定方法ですが、セルF5に小数が入る可能性はあるのでしょうか?
その場合は、奇数のマクロを動かすのでしょうか?
それとも、何もしないのでしょうか?
私の場合は、整数でも小数でも2で割り切れない場合は、奇数のマクロが動きます。
一方、No.3の方のMod演算子の場合は、整数に丸められて判定されます。
つまり、
3.9→4に丸められて、偶数
3.1→3に丸められて、奇数
になります。
Worksheet_Changeイベントに記述しているので、間違って小数を入力しても、起動しますので、対応が必要かと思います。
何度もありがとうございます。
> Worksheet_Changeイベントに記述することを、最初に言ってくれればよかったですね。
すみませんでした。
F5 に偶数が入力された場合、マクロが動くようにするにはWorksheet_Changeイベントしか知らなかったのですが、標準モジュールに書いても同様なことができるのでしょうか?
ボタンなどを押してマクロをうごかすのなら知っていますが。
> セルF5に小数が入る可能性はあるのでしょうか?
そういう可能性もありますね。
考えてなかったです。その場合は、メッセージを出したいです。
No.3
- 回答日時:
こんな感じでどうでしょう?
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Range
For Each r In Target
If Not Application.Intersect(r, Range("F5")) Is Nothing Then
If IsNumeric(r.Value) And r.Value <> "" Then
If r.Value Mod 2 = 0 Then
MsgBox "偶数"
Else
MsgBox "奇数"
End If
End If
End If
Next r
End Sub
No.2
- 回答日時:
>F5以外のところに入力があった場合
Changeイベント見張ってるのだからマクロが動くのはどうしようもないので、先頭にこんなことを書いておけば良いかと。
If Target.Address <> Range("F5").Address Then Exit Sub
>F5を消去してもマクロAが動
F5が消去された時とは、=チェンジイベント時にF5の値が無い時と解釈すればこうとでもかけるかな。
If Target.Value = "" Then Exit Sub
こういった例外処理的な作業は一つ一つつぶしていくしかないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Excel(エクセル) Excelのマクロについて 2 2022/06/14 03:38
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) 先頭と末尾を指定して連続した数字を入力 1 2022/09/14 13:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
VBAにて別ワークブック上の実行...
-
Excel VBAからAccessマクロを実...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
TERA TERMを隠す方法
-
#defineの定数を文字列として読...
-
エクセルで別のセルにあるふり...
-
組んだマクロをメールで送る
-
EXCELのVBAでRange("A1:C4")を...
-
エクセルマクロでワードの一ペ...
-
TeraTermマクロの文字列結合
-
Sub ***( ) と Private Sub ***...
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報