調べてみたものの、それらしきものが見つからなかったので質問します。

エクセルで、標高のデータがA1からX50まで入っているとします。
訳あって、その位置は動かせない事としてください。
それには、1行目の条件を元に、色塗り(14色)をするマクロが組まれているのですが、標高の分類が多すぎて(10m単位で測定)、色が塗れません。
色塗りは、標高0~200m:a色、201~400m:b色・・・というようにしたいのですが、マクロに0~200はa色、というように指定する式を書けば、色が塗れるのでしょうか?
塗れる場合、その式と記入方法まで教えていただけるものでしょうか?
(マクロをいじれる人が数週間いないので・・・)

または、マクロの修正をしない場合、
標高のデータを0~200m=1、201~400m=2というように、書き換えられる式があれば、いいのかとも考えます。
そうすれば、14に分けられて、マクロも実行できるようになるのですよね?
ただ、書き換えられる式が、またまたどれを使ってよいのか、わからなかったので、おわかりになる方、ぜひぜひ教えてください。

このQ&Aに関連する最新のQ&A

color 意味」に関するQ&A: it goes by colorsの意味

A 回答 (3件)

続きです。


セルのA1からN1までを塗りたい色で塗ると
A2からX51までがその色で塗れるようにしたつもりです。
この場合0から200を塗る色をセルA1に、201から400までを塗る色をセルB1に
という手順でN1まで埋めていきます。

Sub 色塗り()
Dim a, m, n As Integer

For m = 1 To 24
For n = 2 To 51

a = Int(Cells(n, m))
Select Case a

Case 0 To 200
Cells(n, m).Interior.ColorIndex = Range("A1").Interior.ColorIndex
Case 201 To 400
Cells(n, m).Interior.ColorIndex = Range("B1").Interior.ColorIndex

(中略)

Case 2601 To 2800
Cells(n, m).Interior.ColorIndex = Range("N1").Interior.ColorIndex
Case Else
End Select

Next
Next
End Sub

今度はどうでしょうか。
    • good
    • 0
この回答へのお礼

本当にありがとうございます!
きれいに色塗りができました!
完全にやりたかったとおりのものが!!
この文章?(式のような)が判るようになりたいです。

お礼日時:2001/11/09 17:14

回答をつくって送信しようと思ったところ先を越されてしまいました。

残念。
下の人と同じなんですが、せっかくなので送信します。

Sub 色塗り()
Dim a, m, n As Integer
For m = 1 To 24
For n = 1 To 50

a = Int(Cells(n, m))
Select Case a

Case 0 To 200
Cells(n, m).Interior.ColorIndex = 1
Case 201 To 400
Cells(n, m).Interior.ColorIndex = 2
(中略)
Case 2601 To 2800
Cells(n, m).Interior.ColorIndex = 14
Case Else
End Select

Next
Next
End Sub

こんなもんでいかがでしょうか。

この回答への補足

みなさん、ありがとうございます!!
色塗りができました。

今回は数値の変えやすい、tamagawa49さんの式を使わせていただきました。

Case 1000 To 1200
Cells(n, m).Interior.ColorIndex = 20

ですが、できれば、20という色番号を参照して塗るのでなく、シートの1行目(例えばA1)に使う人が色を塗って、
マクロを実行すると該当セルがA1の色でに塗れるようにしたいのです。

式の20を書き換えることで、可能になるのでしょうか。
可能な場合、なんと書けばよいのですか?

補足日時:2001/11/09 12:47
    • good
    • 0

>1行目の条件を元に、色塗り(14色)をするマクロが組まれているのですが


この意味は分かりませんので

>色塗りは、標高0~200m:a色、201~400m:b色・・・というようにしたいのですが・・・
を書いてみました。意味をとらえていればいいんですが。標高2600m超はインデックスを14にしています。

>標高のデータを0~200m=1、201~400m=2というように、書き換えられる式があれば・・・
は下の = Int((rg.Value - 1) / 200) + 1 になります。(0mは特別)

色の設定は分かりませんのでテキトーに書いています。= の次にある数字がそうです。色を塗る処理を記録すれば数値の意味がはっきりすりと思います。Helpにもあった?

ご参考に。

Sub ColorPaint()
  Dim rg As Range 'セル
  Dim HyokoIdx As Integer '標高を200m毎にインデックス化
  Dim colIdx As Integer 'カラーパターン

  For Each rg In Range("A1:Z50")
    HyokoIdx = Int((rg.Value - 1) / 200) + 1
    If rg.Value = 0 Then HyokoIdx = 1
    Select Case HyokoIdx
      Case 1: colIdx = 2 '以下、カラーインデックスをテキトーにセットしています
      Case 2: colIdx = 34
      Case 3: colIdx = 35
      Case 4: colIdx = 36
      Case 5: colIdx = 4
      Case 6: colIdx = 6
      Case 7: colIdx = 40
      Case 8: colIdx = 44
      Case 9: colIdx = 38
      Case 10: colIdx = 7
      Case 11: colIdx = 37
      Case 12: colIdx = 42
      Case 13: colIdx = 50
      Case Else: colIdx = 51
    End Select
    rg.Interior.ColorIndex = colIdx
  Next
End Sub
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報