OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

マクロの修正(でしょうか?)または、関数について

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

お礼率 67% (23/34)

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

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

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

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

  • 回答No.3
レベル11

ベストアンサー率 46% (123/265)

続きです。
セルの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

今度はどうでしょうか。
お礼コメント
ebio

お礼率 67% (23/34)

本当にありがとうございます!
きれいに色塗りができました!
完全にやりたかったとおりのものが!!
この文章?(式のような)が判るようになりたいです。
投稿日時 - 2001-11-09 17:14:38
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

>1行目の条件を元に、色塗り(14色)をするマクロが組まれているのですが この意味は分かりませんので >色塗りは、標高0~200m:a色、201~400m:b色・・・というようにしたいのですが・・・ を書いてみました。意味をとらえていればいいんですが。標高2600m超はインデックスを14にしています。 >標高のデータを0~200m=1、201~400m=2というように、書き換えられる式があ ...続きを読む
>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

  • 回答No.2
レベル11

ベストアンサー率 46% (123/265)

回答をつくって送信しようと思ったところ先を越されてしまいました。残念。 下の人と同じなんですが、せっかくなので送信します。 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 ...続きを読む
回答をつくって送信しようと思ったところ先を越されてしまいました。残念。
下の人と同じなんですが、せっかくなので送信します。

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

こんなもんでいかがでしょうか。
補足コメント
ebio

お礼率 67% (23/34)

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

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

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

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

式の20を書き換えることで、可能になるのでしょうか。
可能な場合、なんと書けばよいのですか?
投稿日時 - 2001-11-09 12:47:58
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


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

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ