- ベストアンサー
オートシェイプの○に条件付きで色付けできますか??
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
わざわざオートシェープを利用して色分けする意味がわからないのですが(私なら別シートのセルを色付けする方法を採用します)、参考までにサンプルコードを提示します。 A6セルに日付が入力されていて、A6セルとの期間が180日以上あるならオートシェープの塗りつぶしを青、0日以上なら黄色、それ以外は赤にする条件で、この日付セルに対応するオートシェープの名前が例えば「楕円3」なら(オートシェープを選択したとき、画面左上の名前ボックスで確認)、このシートでシート名を右クリックして「コードの表示」で以下のようなコードを貼り付けてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myD As Long myD = Date - Range("A5").Value Select Case myD Case Is > 180 ActiveSheet.Shapes("Oval 3").Fill.ForeColor.SchemeColor = 4 Case Is > 0 ActiveSheet.Shapes("Oval 3").Fill.ForeColor.SchemeColor = 5 Case Else ActiveSheet.Shapes("Oval 3").Fill.ForeColor.SchemeColor = 10 End Select End Sub
その他の回答 (1)
- MackyNo1
- ベストアンサー率53% (1521/2850)
条件付き書式などのエクセルの一般機能でオートシェープに色を付けることはできません。 どのような目的で、オートシェープの色を変更したいのかわからないのですが、このような場合はマクロを利用することになります。 しかし、100か所以上色付けをしたいというのであれば、セル位置とオートシェープの名前との対応が規則的である場合以外は、力技ですべてのケースに対応するコードを記述する必要がありますので、ほとんど実用的ではありません。 マクロで対応する場合を含めて、皆さんから代替案が提示される可能性もありますので、オートシェープで色を変更したい目的やセル位置の関係などを、できる限り具体的に例示されてみてはいかがでしょう。
補足
アドバイスありがとうございます。 現在、sheet1に部品の交換日を入力してそこから交換時期を表示して管理しています。 これを別のsheet2に作った図面の部品箇所に手動で色付けして、各部品の交換時期の 状況を見やすくしているわけですが、sheet1の内容が変更されるたびに自分でsheet2のオートシェイプで作った○を色付けしているのを何とか自動でできないかと思いまして。自分の知識では、 まだまだ、教わったVBAのコードをちょこちょこいじるくらいで、全然わかりません・・・・・。 はたしてこれが可能なのかもよくわからないので、わかる方よろしくお願いします!!
お礼
ありがとうございました!! なんとかできました!!これからすべての箇所を設定していきます。 これで思うようにいきそうです。ありがとうございました。
補足
すみません・・・。 うまくいきません。