• ベストアンサー

Excelで白黒で256階調出す方法

 Excelのあるセルに0~255のいずれかの数字を入力すると、そのセルがその数字にあった白黒での輝度の色で表示されるようにしたいのですが、そんなことできるのでしょうか?  ただ、色が出るのは数字を打ち込んだセル自身ではなく、別のセルになってもかまいません。  ただし、色を変化させたいのは単発ではなく、縦横500×500位の画素が欲しいと思っています。  どなたか良きアドバイスをお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

#3ですが・・・ 先に提示したコードで、例えば、色の番号を入力するとき、万が一間違って 128- など"-" が後に付加 されると実行エラーになりますので、下記のコードと差し替えてください。 使用例は、例えば、B1に0、B2に10 を入れ、この2つを選択して下にフィルドラッグしてください。 Public Fg As Boolean Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Set Target = Intersect(Range("A1:IV500"), Target) If Target Is Nothing Then Exit Sub If Selection.Rows.Count > 500 Then Exit Sub For Each Rng In Target   If Fg = False Then setplt   If IsNumeric(Rng.Text) Then     Rng.Interior.Color = RGB(Abs(Rng * 1), Abs(Rng * 1), Abs(Rng * 1))   ElseIf IsEmpty(Rng) Then     Rng.Interior.ColorIndex = xlNone   End If Next Rng End Sub Sub setplt() Dim N As Integer Dim C As Integer For N = 1 To 56   C = Int(255 / 55 * (N - 1))   ActiveWorkbook.Colors(N) = RGB(C, C, C) Next N Fg = True End Sub

chal
質問者

お礼

 お礼が大変遅くなり、申し訳ありません。ご回答、ありがとうございました。  256段階での表示、確認しました。使用させていただきます。  また何かありましたら、よろしくお願いします。

その他の回答 (3)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

次の手順で操作すると、ご希望の機能になると思います。 ・使用しているシートのシート名タブを右クリックして「コードの表示」を指定します。 ・開いたコードウィンドウに下記コードをコピーして貼り付けます。 ・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 ・メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を  「中」にして[OK]します。 ・以上で設定完了です。  500行より上の任意のセルに0~255の数値を入力してみてください。 相応のコントラストで塗り潰されます。 シート全体とか、行を選択し、 DEL したときは、色を残し、数値だけをクリアします。 小範囲を選択し、 DEL した場合は、その範囲だけを「塗り潰し無し」に戻します。 多分、こういうことではないかと思いますが、如何でしょうか。 Public Fg As Boolean Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Set Target = Intersect(Range("A1:IV500"), Target) If Target Is Nothing Then Exit Sub If Selection.Rows.Count > 500 Then Exit Sub For Each Rng In Target   If Fg = False Then setplt   If IsNumeric(Rng.Text) Then     Rng.Interior.Color = RGB(Rng.Value, Rng.Value, Rng.Value)   ElseIf IsEmpty(Rng) Then     Rng.Interior.ColorIndex = xlNone   End If Next Rng End Sub Sub setplt() Dim N As Integer Dim C As Integer For N = 1 To 56   C = Int(255 / 55 * (N - 1))   ActiveWorkbook.Colors(N) = RGB(C, C, C) Next N Fg = True End Sub

chal
質問者

お礼

 お礼が大変遅くなり、申し訳ありません。ご回答、ありがとうございました。

  • hakone
  • ベストアンサー率54% (40/73)
回答No.2

>白黒56段階での表示は可能なのでしょうか? マクロを使えば可能です。 こんなんでヒントになりますか? (カラーパレットを変えておく必要があると思います) #ただ、横500列はEXCELでは無理ですよ。 #256列しかありません。 Sub test()  For i = 1 To 56   ActiveWorkbook.Colors(i) = RGB(i + 99, i + 99, i + 99)   Cells(i, 1).Interior.ColorIndex = i  Next End Sub

chal
質問者

お礼

 お礼が大変遅くなり、申し訳ありません。 ご回答、ありがとうございました。  56段階で表示できました。また、列に関するご指摘もありがとうございました。  また何かありましたら、よろしくお願いします。

  • hakone
  • ベストアンサー率54% (40/73)
回答No.1

こんにちは。 残念ながら、無理です。 Excelは同時には56色しか表示できません。

chal
質問者

お礼

 お礼が大変遅くなり、申し訳ありません。 ご回答、ありがとうございました。

chal
質問者

補足

 早速のご回答、ありがとうございます。  追加質問で申し訳ありませんが、では白黒56段階での表示は可能なのでしょうか?  あるいは、たとえば100~155の間の輝度に絞り、この間での56階調を表示するなどは可能なのでしょうか?

関連するQ&A

専門家に質問してみよう