• ベストアンサー

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=ああああ(文字) 以上お手数ですがなにとぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

テストはしてませんが、こういう感じの発想で上手く行くと思います。 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)
回答No.2

>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

関連するQ&A