ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

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
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼早速ご回答ありがとうございます。

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