[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Elseに対するIfがありませんの解決』(zunzun)
ある範囲のセルに変更があったら、2つ命令をだすマクロを書きましたが、
Elseに対するIfがありませんとエラーがでます。
どこに問題があるのでしょうか?
よろしくお願いいたします。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("h14:m44")) Is Nothing Then Exit Sub
ElseIf Not IsNumeric(Range("h14:i44, l14:m44")) Then MsgBox "書き込み禁止!!元に戻して!!", vbCritical
ElseIf Not IsNumeric(Range("j14:k44")) Then Range("ad4") = Now()
Else Exit Sub End If
End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
最初のIf Intersect(Target, Range("h14:m44")) Is Nothing Then Exit Sub はその一文で完結してますので、次のElseIfをIfに直しましょう。
それからIsNumeric関数は複数範囲を指定した時に動作しませんので、 ループしながら一つずつ見て全て数値だったら次に進むようなコードにしてみては? (Jera) 2015/01/25(日) 18:53
失礼します。
複数セル、さらには複数領域のIsNumericにかんしてはJeraさんのコメント通りです。 で、もし、空白は数値ではないという判定でよければ(IsNumericでは空白もTrueになる) WorkSheetFunction.Count(その領域群) で、取得できた個数がその領域群のセル数と異なれば 数字以外のものがあるという認識ができますので、ループなしでもいけます。
(β) 2015/01/25(日) 19:08
If Intersect(Target, Range("h14:i44,l14:m44")) Is Nothing Then Exit Sub Else
MsgBox "このセルには入力できません", vbCritical
End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("j14:k44")) Is Nothing Then Exit Sub
If Not IsNumeric(Range("j14:k44")) Then
Range("ad4") = Now()
Else Exit Sub End If
End Sub
(zunzun) 2015/01/26(月) 10:06
全体の流れは見てませんが、
If Not IsNumeric(Range("j14:k44")) Then
Range("ad4") = Now()
Else Exit Sub End If
ここの部分だけみたら、
If Not IsNumeric(Range("j14:k44")) Then Range("ad4") = Now()
でいいようにおもいます。 (カリーニン) 2015/01/26(月) 10:10
いやぁ・・・解決してないと思いますよ!
(Jera) さんの指摘通り、複数セル領域に対する IsNumeric は 【常にFalse】ですから・・・
(β) 2015/01/26(月) 10:15
>ここの部分だけみたら
「ここの部分」も見てないのがバレバレの回答でした・・・。
失礼しました。 (カリーニン) 2015/01/26(月) 10:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.