• ベストアンサー

エクセルのVBAについて教えてください

初めまして、いきなり質問で申し訳有りませんが、 今、エクセルを使って、 「複数のセルの中から(例えばa2からf6まで)の中の数字の最高の値のフォントの色を変える」 と言うマクロを組みたいとやってるんですが、 出来ないんです。 どのようなマクロになるのか、 教えていただけないでしょうか。 使ってるヴァージョンはエクセル95です。 すいませんがよろしくお願いします m(__)mペコリ            triton

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.3

ん?下の投稿文字化けしてますよね? おれだけかな。 まそれは置いといて。 同値でもとなれば、もう少し変えないとだめかな。 つーか根本的に変えんと(笑) 動的配列とかFind使って検索とか? んー面倒だ。前の奴を改良します。 Sub test Dim C As Variant Dim X As Integer '最高値を取得 For Each C In Worksheets(1).Range("a1:f10") If C.Value >= X Then X = C.Value End If Next C '最高値を赤字に For Each C In Worksheets(1).Range("a1:f10") If C.Value = X Then C.Font.ColorIndex = 3 End If Next C End Sub つまりは全チェックループを2回くりかえす。 もっと効率的に出来るはずだけど ドンクサすぎます(>_<) ま一例ということで。 では

triton
質問者

お礼

popesyuさん、ありがとうございました。 無事、望み通りの事が出来ました。 他にも色々やり方があるんですね。 これから、勉強していきたいと思います。 本当にありがとうございました。          triton

その他の回答 (2)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

私も条件付書式の方が簡単なのでは と思うのですが。 きっとその複数のセルと言うのが毎回任意のセルに なってしまうとかで毎回設定するのが面倒とか? ならば、条件付書式の方をマクロ化する手も ありますが(笑) まぁとりあえずご質問のマクロを適当に書いみました。 -------------------- Dim C As Variant Dim X As Integer Dim target As String For Each C In Worksheets(1).Range("a2:f6")  If C > x Then   x = C.Value   target = C.Address End If Next C Range(target).Font.ColorIndex = 3 --------------------- 簡単に解説しますと。 1.For Each ~ In が配列やコレクションでループを 繰り返す構文です。この場合は、A2からF6までの セルに対して以下のことを繰り返します。 2.Ifでその都度セルの値を変数Xと比較します。  値がXより大きければXに値を取得し、アドレスも取得。  (とりあえずの最大値という形です) 3.それをループ。取り合えずの最大値を常に 取得していってるので、最終的にはそれが最大値。 4.フォントの色はFont.ColorIndexとかで 変更できますが他にも色々あります。 まこの手のプログラムならアプローチ方法は 幾らでもありますのでひとまず参考にでも。 では

triton
質問者

補足

osafuneさん、popesyuさん、お返事ありがとうございます _(._.)_ popesyuさんのマクロを試してみました。 うまく動くんですが、最高値が2個あった場合、 最初の物しか色が変わらないんです。 これは私の説明が足りなかったせいで、 申し訳なかったです m(__)mペコリ 最高値が2つあれば2つ、3つあれば3つ全部の フォントの色が変えたいんです。 すいませんが、よろしくお願いします m(__)mペコリ            triton

  • osafune
  • ベストアンサー率48% (106/217)
回答No.1

tritonさん、こんにちは VBAじゃないとダメですかね? 「条件付き書式」の設定で可能だと思います。 1.まず、範囲を選択します。(例ではa2からf6) 2.メニューバーの「書式」→「条件付き書式」を選択 3.条件に「セルの値が」「次の値に等しい」を選択、ボックスには「=MAX(a2:f6)」という風に入力、次に書式をクリックしフォントの色を赤に指定して、OKをクリック 以上で出来上がりです。

関連するQ&A