[[20150125174448]] 『Elseに対するIfがありませんの解決』(zunzun) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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


jeraさん、βさん
ありがとうございます。
ご指摘を頂き、下記のように2つのイベントプロシージャに変更して解決しました。ありがとうございました。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    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

みなさん
ありがとうございます。
解決しているようですが、再度確認してみます。
ありがとうございました。
(zunzun) 2015/01/26(月) 18:34

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.