• 締切済み

エクセル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

  • VBAについて質問させていただきます。

    マクロを組もうと思っているのですが、 どうすればいいのかご教授下さい。ファイルの中には 34枚のシートがありD11:D58の中に値が入力されているのですが、 10以下の数字が連続して縦に8個のセルに入力されていたらmsgで 「セル番号&に異常が見られます」と出したいのですが、 どうすればよろしいでしょうか?? 本やネットなどいろいろ検索してみましたがどうしてもわかりません・・・ また質問の仕方が悪いかもしれませんので、 また追記させていただきます。 (例)D11~24まで「6」の数字が連続で入っている場合、   セル番号&に異常が見られます」というメッセージを   出したいです。

  • ExcelのVBAでお聞きします。

    初心者の為、分からないのですが・・・すいませんが宜しくお願いします。 シート上に特定の文字(有給)と入力した時に、その文字を数えるようにCOUNTIF関数を使って A1のセルに個数を表示させました。 同じように計画と入力した時に、その文字を数えるようにCOUNTIF関数を使って B1のセルに個数を表示させました。 ここからなんですがシート上に(有給)と入力した時に、メッセージボックスを使って 残りの有給は○○あります。と表示させたいのです。 同じように(計画)と入力した時に、メッセージボックスを使って 残りの計画は○○あります。と表示させたいです。 有給と計画の入力範囲ですが・・・E11:AD76です。 A1とB1には、COUNTIF関数で、残数を表示させています。 A1が有給の残数です。 B1が計画の残数です。 この様な、動作をさせる場合は、どの様なコードを作成すればよいのでしょうか? お手数ですが教えて頂けますでしょうか?

  • エクセルVBAについて

    エクセルVBA についての質問です。 この問題の答えを教えて頂きたいです。 次の条件を満たすプロシージャを作成してください。 1、ダイアログボックスに最初に市外局番なしの電話番号を入力すると、 先頭に小文字の「a]をつけた電話番号が自動的に、セルB3に入力される。 2、ダイアログボックスでキャンセルを押すと、 電話番号を入力してください、というメッセージボックスが表示される。 3、セルB3の値が「a1234567890」のとき、セルB3が赤の太字になり、 さらにセルC3に「検証用です」と入力される。 この問題の正解となる式を教えてください。 どこが間違っているかがわからず困っております。 よろしくお願いいたします。

  • エクセルVBAについて

    以下の処理をマクロで実行しようと思っていますが、わからない部分があるので教えてください。 (例):  A B C D E F G 1 1 2  3  4 5  6  7 2 10 30 50 70 90 130 150 3 4 (1)1行目のどこかの連続したセル(例えばセルA1から セルD1)をドラッグする。 (2)マクロを実行する。 (3)セルA4に、「D2-A2」を計算した値が自動的に入力 される。この例では「70-10=60」  これは、(1)で例えばセルB1からF1をドラッグした場 合には、「F2-B2」を計算した値を入力したいので す。   要は、連続したセルを選択してその始点と終点のセルの行と列を取得できればこの処理はできると思うのですが、方法が分かりませんので教えてください。 よろしくお願いします。

  • エクセルのマクロのコンボボックスへ入力した

    エクセルのマクロのコンボボックスへ入力した値をセルに表示する際のことで質問があります。 ABCDEという5つのコンボボックスから、A1、A2、A3,A4、A5のセルへ入力していますが、時々CやDの値がなくてEの値を左詰めするというか空白のセルを作らずに入力したいです。 例えばAのコンボボックスには入力でA1、Bのコンボボックスは未入力でCのコンボボックスに入力した値をA2のセルへ入力といった具合にしたいです。 コンボボックスBが未入力なら、 ・コンボボックスCの値をBへ ・コンボボックスDの値をCへ ・コンボボックスEの値をDへ ・コンボボックスEは空白に コンボボックスCが未入力なら、 ・コンボボックスDの値をCへ ・コンボボックスEの値をDへ ・コンボボックスEは空白に コンボボックスDが未入力なら、 ・コンボボックスEの値をDへ ・コンボボックスEの値を入力 という手順を挿入。 で本来のやりたいことの コンボボックスA~EをセルA1:A5の範囲へ入力。 と教えてもらったんですが、それを生かせず、自分なりに考えてみて IF Then Else を使ってA3まではやれたんですが、A4、A5がうまくできなくて挫折しています。 http://www.max.hi-ho.ne.jp/happy/YNxv233.htmlを参考にしてくださいと教わったのですがどれが使えるのかもわからず・・・・。 わかんないことばかりですいません。

  • エクセルVBA(?)を使って

    エクセルで特定の商品コードをセルに入力すると その商品コードに対する商品名称(日本語)を 表示させたいのですが、具体的にどのような コーディングにすればいいのでしょうか?? 入力シートから 商品コード・商品名称が入力してある シートを参照させて商品名称を取得したいのです。 可能ならば 該当する商品コードに対する名称が 取得できなかった場合、何かのメッセージボックスを 表示させたいのですが・・・。 エクセルのバージョンは97です。 OSはWin98です。 商品コードに対する商品名は1対1で 商品コード・商品名称の入っているシートと 商品コードを入力するシートとは 同一ブックです。 100件以上のコードに対して紙ベースで 商品名称を捜すのに 泣いています(≧_≦) 助けて下さい!!!

  • Excelでリストボックス(入力規則)を活用したい

    Excelでセルにリストボックスを作りたいと思っています。 リストボックスの値は、シートのセルから導きだすのですが、A1からA12までに値が入力されているとして、重複する値はリストボックスに含めないようにリストボックスを作成したいのです。 入力規則の手順は分かるのですが、重複しない配列を作成する方法が分からないです。 詳しくは画像のとおりです。 どうぞよい知恵を授けてください。

  • VBAで重複と未入力項目の判定をしたい

    現在Excelにて、D列、E列、F列にそれぞれ入力する欄を設けています。 D列は入力必須項目、重複不可、E列は重複OK、未入力OK、F列は入力必須項目、重複OK という条件です。 ユーザが情報を入力後、ボタンをクリックした際に上記の条件に当てはまらないか 判定する処理を盛り込むにはどうすればよいでしょうか。 ボタンクリック後は、エラーが該当した行のC列にそれぞれ 「重複」または「未入力有」または「重複/未入力有」と値を入れたいと考えています。 恐らく大きなFor文の中に判定するコードを書いて、最終結果にメッセージを表示し、 C列に値を入れる・・・という感じになると思うのですが、VBA初心者のため、 どうコードを書けばよいかわからず困っています。 可能であればコードを合わせてご教示いただけると大変助かります。 ざっくりとした質問で申し訳ありませんが、どうぞよろしくお願いいたします。

  • エクセルのショートカットORマクロ

    お世話になります。 XP/エクセル2003使用です。 早速ですが、質問させていただきます。 エクセルのショートカットで、 同じ値の最後のセルまでセル範囲を選択するショートカットを探しています。 -------- 同じ値の1個目のデータが複数行に渡ってあります。 そして、1個目のデータに続いて、1個目とは異なる値の2個目のデータが複数行に渡ってあります。 3個目以下同じ繰り返しです。 例えば、A列の 1~800行目  あああ 801~1100行目  いいい 1101行目~1205行目 ううう 1206行目~1310行目 えええ 1310行目~1499行目 おおお  同じ値が入力された連続する行の数に規則性はありません。  また、異なる値の個数も作業の都度変わります。(”あああ”などの値の個数のことです) エクセルのショートカットで、 入力された最後のセルを探すのは、 「Ctrl」+「Shift」+「↓キー」で可能ですが、 同じように、同じ値が入力された最後のセルまで 何かのショートカットでセル範囲の選択をできますでしょうか? または、マクロで記述するとすると どのようなコードになりますでしょうか? 作業としましては、 A1セルを選択した状態でA800セルまでセル範囲を選択し、ある作業をします。 次に、A801セルを選択した状態でA1100セルまでセル範囲を選択し、上記と同じ作業をします。 これの繰り返しです。 行数が多いので、セル範囲を選択するときに スクロールで上手く上下させることができず面倒になっています。 よろしくお願いします。

  • エクセルとVBA

    こんにちは。 エクセル勉強中です。 今、エクセル2007で下の画像のような、売上と支店別 のシートを作成しました。 A2セルからA9に売上金額が入力されており、B2セルからB9 セルに支店名が入力されています。 A10セルとB10セルは合計額です。 ここでしたい処理なのですが、それぞれ支店別に 金額を合計して、画像の右のようなメッセージボックスを VBAで出すコードなんてあるのでしょうか。 今は目視で計算しているので大変です。 よろしくお願いします。

専門家に質問してみよう