- ベストアンサー
VBA で選択した範囲に入力されている数字がきちんと順番通り存在しているか確認したい
お世話になります。 VBAで質問させてください。 EXCELであるシートのA1~A5の中に1から順番で数字が存在しています。 その中の数字がきちんと通し番号で存在しているのか調べたいのですが どのようにすればよいでしょうか ※各セルは、必ず数字だけが存在しているのではなく、文字や空白のセルも存在します。 ※数字の初めは必ず1ですが、終わりの数字はわかりません。 例1 数字が通しで1~3が存在しているのでOK A1=3 A2=なし(空白) A3=2 A4=ああああ(文字) A5=1 例1 数字が通しで2がとばされているのでNG A1=3 A2=なし(空白) A3=4 A4=1 A5=ああああ(文字) 以上お手数ですがなにとぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
テストはしてませんが、こういう感じの発想で上手く行くと思います。 Range("A5").Select '--->検索開始のセルを選択、上に検索するとする Dat_A = 1 '--->検索開始の数値 Do Selection.Offset(-1).Select IF IsNumber(Selection.Value) Then Dat_B = CDbl(Selection.Value) IF Dat_B = Dat_A + 1 Then '-->順次増えているかどうかのチェック Dat_B = Dat_A Dat_M = "OK" elseIf Dat_M = "NG" '-->狂っていればメッセージにNGをセットしてループアウト exit Do end if end if Loop While Selection.Address = "A1" '-->検索終了のセル MsgBox Dat_M こんな感じでいけそうです。
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>EXCELであるシートのA1~A5の中に1から順番で数字が存在しています。 With Application maxnum = .Max(Range("A1:A5")) For i = 1 To maxnum If IsError(.Match(i, Range("A1:A5"), 0)) Then MsgBox i & " が有りません", 16 End If Next End With >VBA で選択した範囲に入力されている数字がきちんと順番通り With Application minnum = .Min(Selection) maxnum = .Max(Selection) For i = minnum To maxnum If IsError(.Match(i, Selection, 0)) Then MsgBox i & " が有りません", 16 End If Next End With