質問 |
||
| QNo.3987004 | エクセルVBAについて | |
|---|---|---|
| 質問者:giragere |
すみません。以前にも質問させて頂いた内容と重複する部分があるのですが、 どうしてもわからないので質問させていただきます。 D11〜E58のセルの範囲で値が10以下 かつ 同じ値がセル縦に5個以上連続して入力されているセルを メッセージボックスに(セル番号、値)を出したいのですが、 どのようにコードを記述すればいいのかどなたかご教授いただけませんか? とくに同じ値がセル5個以上に入力されている場合の エラーメッセージの記述がわかりません。 説明が悪いかと思いますので、また何かあれば追記させていただきます。 |
|
困り度:
|
||
| 質問投稿日時: 08/04/30 11:13 |
||
回答 |
|
| ANo.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 | |
| 種類:アドバイス どんな人:経験者 自信:自信あり |
|
| 回答日時: 08/04/30 18:04 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.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 |
|---|---|
| 回答者:okormazd | |
| 種類:回答 どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/04/30 13:04 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | 早速ご回答ありがとうございます。 私のやり方が悪いのか、うまく動きませんでした。 もしお時間よろしいようでしたら、 宣言方法、省略部分を教えていただけたら幸いです・・・。 まだまだ初心者なのでご容赦ください。 |