-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.6767
  • 閲覧数39
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 33% (1/3)

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

使ってるヴァージョンはエクセル95です。

すいませんがよろしくお願いします m(__)mペコリ

           triton
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル14

ベストアンサー率 36% (1782/4883)

ん?下の投稿文字化けしてますよね?
おれだけかな。

まそれは置いといて。
同値でもとなれば、もう少し変えないとだめかな。
つーか根本的に変えんと(笑)
動的配列とか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

お礼率 33% (1/3)

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

本当にありがとうございました。

         triton
投稿日時 - 0000-00-00 00:00:00
関連するQ&A
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 48% (106/217)

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

VBAじゃないとダメですかね?
「条件付き書式」の設定で可能だと思います。

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


  • 回答No.2
レベル14

ベストアンサー率 36% (1782/4883)

私も条件付書式の方が簡単なのでは と思うのですが。 きっとその複数のセルと言うのが毎回任意のセルに なってしまうとかで毎回設定するのが面倒とか? ならば、条件付書式の方をマクロ化する手も ありますが(笑) まぁとりあえずご質問のマクロを適当に書いみました。 -------------------- Dim C As Variant Dim X As Integer Dim targ ...続きを読む
私も条件付書式の方が簡単なのでは
と思うのですが。
きっとその複数のセルと言うのが毎回任意のセルに
なってしまうとかで毎回設定するのが面倒とか?
ならば、条件付書式の方をマクロ化する手も
ありますが(笑)

まぁとりあえずご質問のマクロを適当に書いみました。
--------------------
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

お礼率 33% (1/3)

osafuneさん、popesyuさん、お返事ありがとうございます _(._.)_
popesyuさんのマクロを試してみました。
うまく動くんですが、最高値が2個あった場合、
最初の物しか色が変わらないんです。

これは私の説明が足りなかったせいで、
申し訳なかったです m(__)mペコリ

最高値が2つあれば2つ、3つあれば3つ全部の
フォントの色が変えたいんです。
すいませんが、よろしくお願いします m(__)mペコリ

           triton
投稿日時 - 2000-08-23 23:17:44
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ