[[20040607182432]] 『セルの斜め半分塗りつぶし』(YUTOMAMA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルの斜め半分塗りつぶし』(YUTOMAMA)

セルを斜め半分だけ塗りつぶすことはできるのでしょうか?


 これは、ほとんど無理でしょう、多分。
 (kazu)

 昔、挑戦しました。
無理でした。
結局、図形で三角形を作って
セル上に配置しました。
(KAMIYA)

では、オートシェーブで図形を作成したのですが、
入力した数値によって図形に色をつけるとかセルに色をつけるなどといったことはできますか?

セルになるべくぴったりの△形を作成したので、なんとかできないかと・・・

(HISA)


 図形はVBAでないとむり。
セルに色づけは条件付書式で何とかなると思いますが。
(デフォルトの色と、条件付書式で3種類)
それ以上の色の数は、やはりVBAですね。
(KAMIYA)

 この技は、こちらで教えていただいたよう気がするのですが。。。
 いろいろな制限はあるようですが、以下をともかく一度、試行して下さい。

 1.A1に0と入力し、セルの書式設定、フォントで色を白色とする。
 2.パターンでA1の地色を白色とする。
 3.罫線でA1の右側に罫線を引き、色を隣の塗りつぶしの色とする。
 4.配置で方向を40度程度(状況による)とする。
 5.B1のパターンの色をA1の罫線と同じに設定する。
 というものです。                      (LOOKUP)

 TO LOOKUPさん
隣のセルの傾き表示をかぶせるわけですか。
ワザですねぇ。
>制限はあるようですが
の言葉どおり、隣のセルをつぶすので使いどころが難しそうですが。
「図のリンク貼り付け」の元の画像として使用すれば、便利そうです。
(KAMIYA)

 条件付き書式でセルに色を塗っておき(この状態では四角)、さらに上からオート
 シェイプで白い三角形を描く。このとき、図形の調整→位置会わせ→グリッド を
 使うとセルにぴったりになる。オートシェイプは塗りつぶしも、線も白くすること。
 線の太さを適当(やや太めが良いかも)にすること。これで「三角形の塗り」ができます。
 条件付き書式では、入力した数字によって(条件に合致しないときも含め)4色まで使えます。
 このセルに数字などを表示するときは、図形のリンク貼り付けでこのセルに貼ります。
 かなり強引な方法ですが…。
 (ちゅうねん)


皆さん色々アドバイスありがとうございます。
昨日は書き込み後すぐに退社してしまい、今ボードを見たところです。
仕事が一段落したら午後にでも取り掛かろうと思いますので、また相談に乗ってください。
よろしくお願いします。

ちなみに、セルまたは図形をクリックしたら色がつくってことはできますか?
やはり数値入力になりますか?
VBAで結構です。
(YUTOMAMA)


ちゅうねんさんの方法でやってみようと思います。

左上角を直角とした三角形を作りました(逆でもいいのですが・・・)。

有給を取ったら塗りつぶすというスタイルです。

最終的にはD6〜D37とE6〜E37のセルを条件によって塗りつぶしたいのですが、

例えばD6に0.5と入力した場合図形の色を黒くする方法はどのようにしたらいいですか?
(YUTOMAMA)


 セル一つ一つに対応する図形があるとすれば、なかなか作業はたいへんです。
セル二つと図形二つでこれ↓ですから。
シート見出しを右クリック、「コードの表示」を選択し、VBAの世界に入ります。
右側の真っ白けのウィンドウ(コードウィンドウ)へ下記を張り付け。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Address
 Case Is = "$D$6"
     ActiveSheet.Shapes("AutoShape 1").Select
 Case Is = "$D$7"
     ActiveSheet.Shapes("AutoShape 2").Select
 Case Else
     Exit Sub
 End Select
     If Target.Value = 0.5 Then
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 8
     Else
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 9
     End If
 Target.Offset(1,0).Select
 End Sub
 
基本的にはSelect 〜 End Selectの間へ
 Case Is = セルアドレス
     ActiveSheet.Shapes(図形の名前).Select
を必要数作成すればよいわけですが。
(KAMIYA)

KAMIYAさんありがとうございます。
ちょっと勉強ついでにやってみます。

つまづいたらまたお願いします。

(YUTOMAMA)


 追記しようと思ったら書き込みがあり、衝突してしまいました。
マクロを掲載してしまったからこう書くのも順番が逆なのですが、 
もし、両方の色を変える必要が無ければ、セルの色を
条件付書式で変えるほうが設定段階では簡単だと思います。
(KAMIYA)

 0.25と入力すると条件付き書式でセルが塗りつぶされます。セルに図形がのっていますので、

見た目は半分塗られている状態です。

0.5と入力した場合はセル全体が塗りつぶされて欲しいので、やはりマクロかな・・・

って思っています。

(YUTOMAMA)


 ご指摘を受ける前に(^_^;下記の部分を追加しました。
 Case Else
     Exit Sub
(KAMIYA)

 条件によってセルを、
  (1)塗りつぶさない
  (2)半分(三角形に)塗りつぶす
  (3)セルを(四角く)塗りつぶす
 ということですね?
 でも、条件によって図形を塗るのは大変と思います。
 a)代替案として、セルを三角形ではなく(例えば上下あるいは左右で)四角く分割し、
 それぞれを塗るというのはいかがでしょう。(セル2つで表現し、条件付き書式で塗る)
 b)セル全体を塗るが、条件によって塗る色を変える(例えば灰色と黒など。これも
 条件付き書式で対応できます)
 (ちゅうねん)


ちゅうねんさんの言うとうりなんですが、
おおもとの手書きの原紙がありまして、
なるべく原紙と同じようにしたかったので
ちょっと難しいとは思ったのですが・・・・
昨日も何度も妥協しようと思ったんですけど、
なんとか頑張ってみました。
(YUTOMAMA)


またおききしたいのですが、

下記のコードでの0.5以外の数値で4.5と7.5の入力時にも塗りつぶすにはどうすればいいのでしょうか?

End Select

     If Target.Value = 0.5 Then
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 8
     Else
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 9
     End If
 Target.Offset(1,0).Select
 End Sub

(YUTOMAMA)


 ElseIf構文で条件と処理を追加します。
     If Target.Value = 0.5 Then
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 8
     ElseIf Target.Value = 4.5 Then
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 色番号
     ElseIf Target.Value = 7.5 Then
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 色番号
   ・
   ・
   ・
   ・
     Else
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 9
     End If
あまり条件が多いようなら、Select Case構文のほうが
すっきりする場合がありますが、処理上はこれでOK。
(KAMIYA)

ありがとうございます。

理想的なものができそうです。

(YUTOMAMA)


もう少し教えてください。
E37に0.75と入力すると
図形が二つ選択される方法は

Case Is = "$E$37"

     ActiveSheet.Shapes("三角71"&"三角32").Select

でいいのでしょうか?

(YUTOMAMA)


     ActiveSheet.Shapes("三角71"&"三角32").Select
このコードでは"三角71三角32"という名前のオートシェイプを指定することになります。
もちろんそのような名前のオートシェイプは作成されていないでしょうから、
オブジェクトエラーが発生します。
実際にCtrlを押しながら複数の図形を選択する動作を記録するとどのような
コードになるかわかりますよ。記録の練習と思ってやってみてください。
 (KAMIYA)

自動記録を参考にやってみたのですが、
二つの図形の色が変わりません。

ActiveSheet.Shapes.Range(Array("三角71","三角32")).Select

(YUTOMAMA)


 こちらのテストでは下記のようなコードで問題なく色が変化します。
 Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Address
 Case Is = "$D$6"
     ActiveSheet.Shapes("AutoShape 1").Select
 Case Is = "$D$7"
    ActiveSheet.Shapes.Range(Array("AutoShape 1", "AutoShape 2")).Select
 Case Else
     Exit Sub
 End Select
     If Target.Value = 0.5 Then
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 8
     Else
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 9
     End If
 Target.Offset(1, 0).Select
 End Sub
 
構文は問題ないはずですが、色を変化させる側のコード
     ElseIf Target.Value = 0.75 Then
     Selection.ShapeRange.Fill.ForeColor.SchemeColor = 色番号
これが抜けていないでしょうか?
(KAMIYA)

E37にすでに設定がされていたのでそちらが優先されていました。

もうひとつお聞きしたいのですが、

シートの保護をすると作成したオブジェクトに色を変えることができません。

使用者がオブジェクトを動かせなくする方法ないですか?

簡単にすると、シートの保護をしてもオブジェクトの色を値によって変化可能にしたいのですが

(YUTOMAMA)


 >シートの保護をしてもオブジェクトの色を値によって変化可能にしたいのですが

 シートの保護もマクロで、 保護解除→色の処理→保護
 と処理すればよいです。

  (INA)

理想どうりに仕上がってきました。

色々ありがとうございました。

(YUTOMAMA)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.