- ベストアンサー
エクセルについて(2)
エクセルについて質問です。 簡単なマクロで必要のない「行」の項目全体に線を引く設定("フォーム"のボタンを利用して、押すと線を引く)をしていますが、その線を引いたら(ボタンを押したら)もともとその「行」に指定していた色を取りたい("塗りつぶしなし"の状態)のですが・・・そういった設定は出来るのでしょうか? うまく説明できず申し訳ありませんが、どなたか教えて下さい。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 その説明では、わからないですね。 >「行」に指定していた色を取りたい("塗りつぶしなし"の状態)のですが・ 「行に指定していた色」は、どこから取るのですか? 塗りつぶしなしって、オートシェイプの線なら、塗りつぶしはないと思いますが。どこかに色を書いているということでしょうか? 線を引くマクロはすでにできているというなら、 Shape の Line の.SchemeColor の色定数(標準で、ColorIndex +5)の代入を、変数にして、どこかで取得した、色を、数字に変換して変数に入れるようにすればよいのではありませんか? ただし、すでに線がある場合は、そのオブジェクトを最初に取得しなければなりません。 ただ、別の質問でも書いたのですが、オートシェイプは、書いたり消したりしたら、だんだん色が出なくなります。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
オートシェイプの位置情報はセルの値と違って浮いたようなもので、扱いが難しいと思う。 やるならその直線のTop属性の数が、そのシートのどのセルの間に(例第10セルのTopより大で、第110行セルのTopより小であれば第10行と断定するようなロジックになり煩雑)にあるか割り出す必要がある。 ーーーー しかし、たまたま下記のようにTopLeftCell.Address で直線の左端の位置がある、そのセル番地が取れるので、そこから行を割り出し MsgBox Selection.TopLeftCell.Row この行をEntirerowの指定、または行方向のセル範囲の指定に使ったら。 (直線がシートの枠線に対し斜め線でも、直線左端の現在所在セルを取得できる。本質問ではないが) シートに図形の直線を1本引いて、実験してみること。 Sub test01() Worksheets("Sheet1").Shapes("直線 1").Select MsgBox Selection.Name MsgBox Selection.TopLeftCell.Address End Sub 図形は動貸せるものということも良く考えておく必要はあると思うが。
- jo-zen
- ベストアンサー率42% (848/1995)
以下のようではどうでしょうか? なお、アクティブセルに、/線を入れて、塗りつぶしの色を色なしにできると思います。 Sub Macro1() ' Selection.Borders(xlDiagonalDown).LineStyle = xlNone With Selection.Borders(xlDiagonalUp) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Interior.ColorIndex = xlNone '←色なしにする End Sub
補足
jo-zen さま 再び迅速なご対応ありがとうございます。 私の説明が足りなかったのですが、 "線"は「オートシェイプの直線」ではないといけません。 (とある資料での取り決めの為・・・) 【例】 A1セルに質問内容が記載。 B1~E1セルまで回答欄になっており、 該当する箇所があれば「○」だが・・・ A1セルの質問内容に全てに該当しなかった場合、 A1~E1行全体にオートシェイプの直線で 線を引き、表示しなければならない。 と、いうような感じなのですが・・・ すみません、よろしくお願い致します。