• 締切済み

エクセルVBAについて

すみません。以前にも質問させて頂いた内容と重複する部分があるのですが、 どうしてもわからないので質問させていただきます。 D11~E58のセルの範囲で値が10以下 かつ 同じ値がセル縦に5個以上連続して入力されているセルを メッセージボックスに(セル番号、値)を出したいのですが、 どのようにコードを記述すればいいのかどなたかご教授いただけませんか?  とくに同じ値がセル5個以上に入力されている場合の エラーメッセージの記述がわかりません。 説明が悪いかと思いますので、また何かあれば追記させていただきます。

みんなの回答

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

>私のやり方が悪いのか、うまく動きませんでした。 よくこういう人がいるのですが、何を期待しているのですか。 本当に何とかしたいというなら、どういう風にやったのか、実行した結果どうなったのか、どんなエラーが出たのか、どこでとまったのかなど書かなければ、どこが悪いのか私のほうでは見当がつきません。 こんなコードは単純なので、普通にやれば動くはずです。省略部分はactivesheet 対象なら必要なく、特別な変数も使っていないので、宣言もしなくて大丈夫なはずですが。 アクチブシートのD11からE58にデータが入っている。これを標準モジュールに貼り付けて実行する。 msgboxの表示を行、列番号から、アドレス表示に直しておいた。 Sub test01() r00 = 11 c = 4 re = 58 ce = 5 r0 = r00 While c <= ce While r0 < re r = r0 + 1 d0 = Cells(r0, c) d1 = Cells(r, c) If d0 <= 10 Then While d0 = d1 r = r + 1 d1 = Cells(r, c) Wend If r - r0 + 1 > 5 Then MsgBox Cells(r0, c).Address & " " & d0 End If End If r0 = r Wend r0 = r00 c = c + 1 Wend End Sub

すると、全ての回答が全文表示されます。
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

こんなことか。 宣言やsheetなどobjectの指定は省略。 Sub test01() r00 = 11 c = 4 re = 58 ce = 5 r0 = r00 While c <= ce While r0 < re r = r0 + 1 d0 = Cells(r0, c) d1 = Cells(r, c) If d0 <= 10 Then While d0 = d1 r = r + 1 d1 = Cells(r, c) Wend If r - r0 + 1 > 5 Then MsgBox r0 & " " & c & " " & d0 End If End If r0 = r Wend r0 = r00 c = c + 1 Wend End Sub

giragere
質問者

お礼

早速ご回答ありがとうございます。 私のやり方が悪いのか、うまく動きませんでした。 もしお時間よろしいようでしたら、 宣言方法、省略部分を教えていただけたら幸いです・・・。 まだまだ初心者なのでご容赦ください。

すると、全ての回答が全文表示されます。

関連するQ&A