• ベストアンサー

Excel エクセル で罫線のマクロ記録で困ってしまいました

エクセルであるチェックシートを作成しました。 チェック後にはセルに罫線からの「/」を挿入します。 (いつもはセルの書式設定から実施) この処理をマクロ登録し、ボタンから、「/」を 入れる処理を簡単にできるようにしました。 ところが、このボタンを押すと、 セルには「/」のみならず、「/」のまわりの「□」の枠まで 貼り付けされてしまいます。 (説明がわかりにくいかもしれません) これだと、一部が太線のセルに「/」を挿入する場合、 いちいち普通の線に変更するため、マクロを活用できておりません。 どなたかご存じの方宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

細かい説明はしないので他に応用はききませんが、この手順通りにやれば必ずできると思うので参考にしてください。 使用ソフトはExcel2003です。 まず斜めの罫線を引くマクロの名前を確認してください。 ここでは説明のため「斜め罫線」というマクロを作ったとします。 次に「メニュー」→「ツール」→「マクロ」→「Visual Basic Editor」をクリックします。すると、マクロの中身を編集するための、Excelとは別のソフトが起動されます。 画面の左上に「プロジェクト」と書かれた小さなウィンドウがあります。見ると「標準モジュール」の下に「Module1」と書かれた項目があるのでダブルクリックします。 すると右側の大きなウィンドウに登録されている全てのマクロの中身(プログラム)が表示されます。マクロは「Sub マクロ名」という形で一つづつ書かれています。今回の例では「斜め罫線」というマクロを作成してあるので「Sub斜め罫線」と書いてある場所を探します。 すると以下のように書かれている筈です。 ------------------------------------------------------------ Sub 斜め罫線() ' ' 斜め罫線 Macro ' マクロ記録日 : 2008/3/21 ユーザー名 : rinet8223 ' ' 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 End Sub ------------------------------------------------------------ With Selection.Borders(xlDiagonalUp)という部分が斜め線を書く処理なのですが、その下のEND Withという部分には、周りの線を消すという処理が勝手に書かれてしまっています。なので、END With以下の4行を削除してください。(End Withは消しちゃダメ) Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone    (↑この4行を消します) 削除できたら、ファイルを保存します。 今はExcelとは別のソフトでマクロを編集しているので、Excelの保存ではなく、「Microsoft Visual Basic Editor」ウィンドウの保存をクリックしてください。保存できたら、「Microsoft Visual Basic Editor」を終了してください。 あとは再びマクロを実行すれば、周りの線が消えることなく、斜めの罫線が引けているはずです。 長くなってしまいましたが、わかりましたでしょうか?

kitreewood
質問者

お礼

ここまで詳しい解説をしていただいて、 感謝の限りです!! 説明がロジカルでわかりやすく、 すぐに問題を解決できました。 何より「考え方」まで理解できたので、 今後、マクロを作成する上で、非常に参考になります。

その他の回答 (4)

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

>ボタンから、「/」を入れる処理を簡単にできるようにしました。 そうして完成してうまく行ったのではないの?わかりにくい表現。 うまくいかないなら 「ボタンから、「/」を入れる処理を簡単にできるようにしましたが 余分な罫線(素)が引かれてしまいます」とか書くべき。 ーー 罫線素は Selection.Borders(xlEdgeLeft). Selection.Borders(xlEdgeTop). Selection.Borders(xlEdgeBottom). Selection.Borders(xlEdgeRight). の4つと 斜線等があるわけだから、 内側の縦線 xlInsideVertical 内側の横線 xlInsideHorizontal 斜線 xlDiagonalUp 斜線 xlDiagonalDown >「□」の枠まで貼り付けされてしまいます。 のならマクロの記録の上記の罫線素片に当たる行(コード)を削除すれば済むのではないの。 何でこんなことを質問するのか判らない。 ーー >一部が太線のセルに「/」を挿入する場合、 太線はどういう事情で話題に出てきた? 太線のセルしか斜線を引かないの。 太線をそのままにしたいの。 そのままにしたいなら マクロの記録の>「□」の枠まで貼り付けされてしまいます、を 解決すると(=☐部分の罫線をマクロが書きこまなければ) 解決すると推測できない?

kitreewood
質問者

お礼

初心者なのですみません。 日本語のご指摘までいただいて 大変ありがとうございます。 今後は、「的確な」文章になるよう注意します。 >「何でこんなことを質問するのか判らない」 知ってしまうとはずかしい質問でしたが、 恥をかいて向上していきたいと思います。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

Range("D5").Select ' 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 マクロの記録で枠線のない状態で、斜線のみ引いて、 [LineStyle = xlNone](線なし)のコードを削除すれば良いです。 残ったコードが線を引くコードになります。

kitreewood
質問者

お礼

「マクロの記録で枠線のない状態で、斜線のみ引いて、 [LineStyle = xlNone](線なし)のコードを削除すれば良いです。 残ったコードが線を引くコードになります。」 そうですよね。ここのところが理解の壁になっておりました。 手品と同じで、種をみてしまうと当たり前なんですが、 かなり悩んでおりました。 本当にありがとうございます。

  • htmcr
  • ベストアンサー率36% (11/30)
回答No.2

#1です。 #1を見てもなにをすればわからない場合は以下のページなどを参考にしてください。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_01.html http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%83%9E%E3%82%AF%E3%83%AD+%E8%A8%98%E9%8C%B2+excel+visual-basic-editor&num=50 マクロの記録というのは、ユーザの操作を そのままVBAのコードに変換するものです。

kitreewood
質問者

お礼

早速のご回答に感謝しております。 ご紹介していただいたリンクはとてもわかりやすくまとまっていて、 初心者の私でもすいすい意味をくみ取ることができました。

  • htmcr
  • ベストアンサー率36% (11/30)
回答No.1

こんにちは。 以下でどうでしょう。 sub DiagonalUpLine() Selection.Borders(xlDiagonalUp).LineStyle = xlContinuous end sub

関連するQ&A