• 締切済み

オートシェイプで作った○を自動で色付け

エクセルでシートが複数あるとして、ひとつのシートのA1セルに入力してある日付は、現在の日付を過ぎると赤く塗りつぶす設定になっています。 そこで、別のシートにあるオートシェイプで作った○を連動して同じように自動で赤く塗りつぶすことは可能でしょうか???もし方法がありましたら教えてください!

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

>エクセルでシートが複数あるとして、ひとつのシートのA1セルに入力してある日付は、現在の日付を過ぎると赤く塗りつぶす設定になっています。 A1はA列の代表か? >現在の日付を過ぎると赤く塗りつぶす とは日がったって、SheetのA1セルの日付がTODAYで表される日より過去の日付になったとき、A1セルのパターン色を赤に変化させる、と言うことか。 そして他のシート(Sheet2以下)の○はそのシートで1つしかないのか。 Sheet1でA3に対応した○が、Sheet2でそれぞれ有るのか。 ==== こう書いたほうが判りやすいのでは。 条件 (1)heet1のA1の日付が<TODAY()なら、 結果 (2)Sheet1以外に有る○を、赤に塗りつぶすと言うことか。 ーー VBAの問題だと思う。 Todayは1日に1回しか変わらないので、 Private Sub Workbook_Open() でいいが、 Changeイベントにして Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub For Each Sha In Worksheets If Sha.Name <> "Sheet1" Then 'MsgBox Sha.Name Dim shp As Shape For Each shp In Sha.Shapes 'MsgBox shp.Name Sha.Shapes(shp.Name).Fill.Visible = msoTrue Sha.Shapes(shp.Name).Fill.Solid 'MsgBox Sh.Range("A1") & "=" & Date If Sh.Range("A1") > Date Then 'MsgBox "saki" Sha.Shapes(shp.Name).Fill.ForeColor.SchemeColor = 13 Else 'MsgBox "ato" Sha.Shapes(shp.Name).Fill.ForeColor.SchemeColor = 53 End If Next End If Next End Sub 質問と内容は変わっているが、Sheet1のA1に日付を入れる。Sheet2以下の○は(各シートには、○しかないものとする) 今日より前の日付ーー>赤色で塗りつぶし 今日より先の日付ーー>黄色で塗りつぶし をするないようです。 A1の日付値を変えると反応します。

回答No.5

#4 misatoanna の訂正です。 > ・名前:印 参照範囲:=INDIRECT(IF(Sheet1!$A$1>=TODAY(),"赤","白")) 不等号が逆でした。 Sheet1!$A$1<=TODAY() ですね。 m(_ _)m

回答No.4

一般機能では、こんな方法もあります。 > Sheet1のA1に入力してある日付は、現在の日付を過ぎると赤く塗りつぶす設定。 条件付書式設定を↑のとおりとします。 1.最後のシートの後に適当な名前(とりあえずDT)のシートを追加し、次のように  します。   1)A列の列幅を行高と同じにし、A1とA2それぞれにセルいっぱいの円をオート    シェイプで描きます。   2)A2の円を赤く塗りつぶし、このシートの枠線を非表示にします。 2.名前を三つ設定します。   ・名前:白  参照範囲:=DT!$A$1   ・名前:赤  参照範囲:=DT!$A$2   ・名前:印  参照範囲:=INDIRECT(IF(Sheet1!$A$1>=TODAY(),"赤","白")) 3.シートDTの白丸のあるセル(A1)をコピーし、Sheet2で図形を表示したいセルを  選択し、[Shift]を押しながらの[編集]から、[図のリンク貼り付け]します。 4.貼り付けた図を選択して、数式バーの数式を =印 に書き替えます。 Sheet1のA1に入力してある日付を変更してみてください。 その他のシートにも設定したい場合は、Sheet2の図をコピーして貼り付けます。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> ひとつのシートのA1セルに入力してある日付は、 このシートをSheet1とします。 > 別のシートにあるオートシェイプで作った○を連動して同じように 別のシートをSheet2、オートシェイプで作った○を"Oval 1"とします。 Visual Basic Editor で、標準モジュールではなくThisWorkbookモジュールに以下をコピペしてみてください。 Private Sub Workbook_Open() With Sheets("Sheet2").Shapes("Oval 1").Fill .Visible = msoTrue .Solid If Sheets("Sheet1").Range("A1") <= Date Then .ForeColor.SchemeColor = 10 Else .ForeColor.SchemeColor = 65 End If End With End Sub BOOKを開いた際、Sheet1のA1の日付が本日以前だったら赤く塗りつぶします。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

No1の回答の通りですが、無理やりやるのなら… ブック・オープンのマクロなどを利用して、同じロジックでその○の色の塗りつぶしを設定してあげるようにすれば可能です。

otoichihr
質問者

お礼

すみません。簡単なマクロしか扱ったことがなくて・・・・。 ど素人でスミマセン・・・・・。

  • kotoby2003
  • ベストアンサー率15% (280/1755)
回答No.1

確か、図形は無理なはずです。

otoichihr
質問者

お礼

すばやい回答ありがとうございます。 やっぱり無理ですか・・・・・。

関連するQ&A

専門家に質問してみよう