アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/03 20:53

次の手順で操作すると、ご希望の機能になると思います。



・使用しているシートのシート名タブを右クリックして「コードの表示」を指定します。
・開いたコードウィンドウに下記コードをコピーして貼り付けます。
・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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/03 20:51

>白黒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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/03 20:51

こんにちは。



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

この回答への補足

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

補足日時:2004/07/23 15:37
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/03 20:48

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