エクセルで条件付きで罫線の斜線を引く方法

このQ&Aのポイント
  • エクセル2007で条件付き書式を使用して、特定の条件のときに罫線の右下がり斜線を引く方法を教えてください。
  • セル(U2)に入力した値に応じて、セル(I10:J11)、(I12:J13)、(I14:J15)、(L10:Q11)、(L12:Q13)、(L14:Q15)の範囲に条件を満たすデータを表示し、10未満の場合は右下がり斜線を引き、10以上の場合は斜線を消します。
  • マクロを使用してこの操作を行う必要がありますが、マクロの組み立て方がわからず困っています。マクロの作成方法や使い方を教えてください。
回答を見る
  • ベストアンサー

エクセルで条件付きで罫線の斜線を引きたいです。

エクセル2007についての質問です。 ある条件のときに罫線の右下がり斜線を引きたいのですが、条件付書式ではできません。 マクロでしなくてはいけないことはわかったのですが、それ以上は進めなくて困っています。 セル(U2)に数字を打ち込んだらセル(I10:J11),(I12:J13),(I14:J15),(L10:Q11),(L12:Q13),(L14:Q15)(結合したもの)にIF関数とINDEX関数を組み合わせて他のシートからセル(U2)に対応するデーターを呼び出しています。 セル(I10:J11)に呼び出した数値が10未満ならセル(L10:Q11)に罫線で右下がりの斜線を入れ、10以上なら右下がりの斜線を消すということが行いたいです。(他の2つの組み合わせでも同様) 当方マクロを組んだことが全くなく本を読んで独学しているのですが、至急必要ということになり当方の技術ではなんともなりません。助けてください。 ちなみにセル(I10:J11)に書いてある関数は=VLOOKUP($U$2,別シート!$A:$I,3,0) セル(L10:Q11)に書いてある関数は=IF(INDEX(別シート!$A$3:$K$400,$U$2,4)=0,"",INDEX(別シート!$A$3:$K$400,$U$2,4)) といったものです。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

I10の内容でL10:Q11に右下がりの罫線を引いたり、消したりなら 下記の内容を、設定するシートのコード欄にコピー&ペーストして確認してください。 マクロの起動は、シート内でセルの移動で実行されます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("I10").Value < 10 Then Range("L10:Q11").Borders(xlDiagonalDown).LineStyle = xlContinuous Else Range("L10:Q11").Borders(xlDiagonalDown).LineStyle = xlNone End If End Sub

toshro_1046
質問者

お礼

早速使わしていただきました!! 完璧に作動いたしました!! セルを書き換えたところ他の二つでも完璧に作動して、感激の嵐です!! 本当にありがとうございましたm(_ _)m

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 投稿した後No.1さんのコードを見て勘違いに気づきました。 罫線を入れたいのは セル(L10:Q11) でしたね! どうも失礼しました。 もう一度コードを載せておきます。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Range("L10").Borders(xlDiagonalDown).LineStyle = xlNone If IsError(Range("I10")) Then MsgBox "データがありません" Exit Sub ElseIf Range("I10").Value < 10 Then Range("L10").Borders(xlDiagonalDown).LineStyle = xlContinuous End If End Sub 'この行まで 何度もごめんなさいね。m(__)m

toshro_1046
質問者

お礼

早速のお返事ありがとうございます!! しかも2回も!! こんな若輩者のためにありがとうございます!!m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! セル(I10:J11)だけの処理で良いわけですよね? 一例です。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてデータを入れ替えてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Range("I10").Borders(xlDiagonalDown).LineStyle = xlNone If IsError(Range("I10")) Then MsgBox "データがありません" Exit Sub ElseIf Range("I10").Value < 10 Then Range("I10").Borders(xlDiagonalDown).LineStyle = xlContinuous End If End Sub 'この行まで 余計なお世話かもしれませんが・・・ 結合されている セル(I10:J11) のセル番地は I10 でOKのはずです。 外していたらごめんなさいね。m(__)m

関連するQ&A

  • エクセルで条件付きで罫線の斜線を引きたいです。

    エクセル2007についての質問です。 ある条件のときに罫線の右下がり斜線を引きたいのですが、条件付書式ではできません。 マクロでしなくてはいけないことはわかったのですが、それ以上は進めなくて困っています。 セル(U2)に数字を打ち込んだらセル(I10:J11),(I12:J13),(I14:J15),(L10:Q11),(L12:Q13),(L14:Q15)(結合したもの)にIF関数とINDEX関数を組み合わせて他のシートからセル(U2)に対応するデーターを呼び出しています。 セル(I10:J11)に呼び出した数値が10未満ならセル(L10:Q11)に罫線で右下がりの斜線を入れ、10以上なら右下がりの斜線を消すということが行いたいです。(他の2つの組み合わせでも同様) 3年前に同じ質問をさせていただき、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("I10").Value < 10 Then Range("L10:Q11").Borders(xlDiagonalDown).LineStyle = xlContinuous Else Range("L10:Q11").Borders(xlDiagonalDown).LineStyle = xlNone End If End Sub という解答をいただき、解決したのですが、 マクロの起動は、シート内でセルの移動で実行されていました。 今回はいくつものデータを呼び出しながら印刷を一括で行うマクロと同時に使用することになり、 印刷中はシート内のセルの移動ができません。 何とかならないものかなぁと模索中ですが、皆さまからお力をいただけないかと 思っております。よろしくお願いします。

  • 条件付き書式で自動で斜線の罫線を引く

    例えば、A1に『×』と入力された場合、B1のセルに斜線の罫線を自動的にひくような条件付き書式の設定をしたいのですがうまくいきません。マクロは難しいので条件付き書式で対応したいと考えておりますが、どなたか方法をご教示いただけませんでしょうか。 ちなみにExcel2007を使用しています。 以上、よろしくお願いいたします。

  • Excelのセルに斜線を引くマクロ

    Excel2007を使用しています。 画像のように,「印刷」シートと「データ」シートがあります。 画像のように,「印刷」シートのAO112~BZ112のセルを結合しています。 そのセルには,VLOOKUP関数で,「データ」シート10列目のデータを返すようにしています。 関数を見てもらえば分かるとおり, もし10列目にデータがなければ(VLOOKUPで値が0なら)””(空白)を返すようにしています。 以上のようなシートで,このセルにデータが無い場合, 画像のAO113~BZ113のように右上がりの斜線を引きたいのです。 もちろん,データが入っている場合は,斜線は消します。 マクロに関しては,まだまだ初心者のため, ほとんど分からないので,分かりやすく教えていただけませんでしょうか? お願いします。

  • エクセル2010 条件付き書式の罫線について

    エクセル2003でうまく動作していた条件付き書式の罫線が、 2010で違う動きをしてうまく表示されません・・・。 以下の条件付き書式で下罫線、右罫線を引くように設定しています。 <下罫線の条件>  =MOD(ROW(),30)=6 適用先:  =R1:T5,R7:T65536(←見づらいので$ははずしました) <下罫線+右罫線の条件> =MOD(ROW(),30)=6 適用先:  =U1:U5,U7:U65536 1~6行目を印刷タイトル行として設定しています。 ページ数は可変なので目安として65536行目あたりまで設定しています。 要は、改ページされる位置の右下部分のセル、R36~T36に下線、U36に下線+右線 を設定したいのです。 その他の罫線は元々の普通の罫線です。 この設定で、エクセル2003では問題なく表示されていましたが、 エクセル2010で表示すると、画像のように セルQ36 の右罫線が消えてしまいます。 セルR36 の条件付き書式の設定が優先されて、 消えてしまっているのかと思われますが、 セルQ36 の元々普通の罫線で設定している右罫線(太線)を表示させたいのです。 ※※ 画像ではわかりやすいように改ページの位置をずらしていますが、 本来は、U列、36行目で1ページ目が改ページされます。 方法があったら教えてください・・・!! よろしくお願いいたします。

  • エクセル97の罫線について

    EXCEL97の罫線について教えてください。 マクロで、単純にデータのあるセルに罫線を引きたいと考えています。 ACCESSのデータをEXCELにエクスポートしてからEXCELのシートを開くので、 シートの列(横幅)はどれだけあるかわかりません。ちなみに行のマックス行の取得の仕方はわかっています。 現在、下のようなコードで5枚のシートに罫線を引いているのですが、すべてのシートが一枚目のシートの列行と同じだけ罫線が引かれてしまいます。 ========================================================== Public Sub get_keisen(sheet As String)  ←シート名が引数 Set ws1 = Worksheets(sheet) '罫線を引くシート Dim maxRow As Long '最大行 Dim I As Integer Application.ScreenUpdating = False ws1.Activate 'シートの最大行を得る ws1.Activate: maxRow = ws1.Range("A65536").End(xlUp).Row 'シートの横幅を得る I = 1 'デ-タ1行目設定 Do Until Cells(1, I) = ""   I = I + 1 Loop '罫線を引く範囲(全体)を選択 ws1.Activate: Range("A1:I" & maxRow).Select   ~ 罫線を引く処理文 ~ end sub =========================================================== もっと簡単な方法があればその方法でかまいません。 宜しくお願い致します。

  • Excelマクロで罫線をひきたい。

    Access2000からエクスポートした結果のExcel2000のワークシートに、線をひきたいんです。 一番最初のセルはa1と決まっているけど、一番最後のセルは毎回変わってしまうのですが、 このセルを取得するためにはどんなマクロボタンを作成すればいいでしょうか? ただ本来の希望としては、マクロボタンひとつで、並べ替え>セルの変更>罫線、としたいのですけれど。 「セルの変更」というのは、エクスポートしたデータで「ランク」という項目があり、 これに「特・A・B」という項目があります。 Access上はひとつのフィールドにまとまっているのですが、Excel上では、それぞれ「特・A・B」という列を作成し、データがあったら、「○」を入れるというようにしたいのです。 (列が増えることになります。) また「備考1・備考2」がAccess上にあり、これは別フィールドとなっていますが、 今度はExcel上で「備考」としてひとつの列にしたいのです。 (列の減少) 別シートを作成してもかまいません。 このようなことはできるのでしょうか? せめて罫線だけでもひければ、と思います。 よろしくお願いします。

  • Excelの罫線のロックについて

    多量のセルを別のワークシートにコピペしなければならない作業があるのですが、各々罫線が異なっているので、いちいち[形式を選択して貼り付け]→[罫線を除くすべて]をしています。 Excelの罫線をロックできるコマンドは特にないし、量が量なので、一発で[形式を選択して貼り付け]→[罫線を除くすべて]のマクロを組んでみたいのですが、マクロはド素人です。 なのでマクロの構文だけではなく、はじめから順を追って教えていただける方、どうぞよろしくお願いします!

  • エクセルの関数について教えてください。

    エクセルの関数について教えてください。 A2~U100まで、データが入っています。 U2~U100に結果を表示させたいのです。 J2~J100には、〇が入っているセルと入っていないセルがあります。 K2~K100には、〇が入っているセルと入っていないセルがあります。 L2=L100には、〇が入っているセルと入っていないセルがあります。 U2~U100に、結果を表示させたいのです。 J列には、〇が入っているのが条件で K列かL列のどちらかに〇が入っていた場合に U列に◎をつけたいのです。 U列に入れる関数を教えてください。

  • エクセル:罫線の置換

    1本ずつマウスで罫線を引いていったシートがあるのですが、 この罫線の色を全てある別の色に変更したいです。 ちょっと量が多いので1本1本マウスを使って変更したい色で上書きしていくのは避けたいのですが、 (升目状に並んでいるわけでもないのでグリッドも使えない) エクセルの機能として罫線の(色お)置換なんてものはありますでしょうか。 というか無いと思うので、 全セルの罫線の状態を取得して色を変更するマクロを組みたいです。 流れとしては、  ・セルの罫線の色を取得する。  ・その罫線の色が青の場合、赤に変更(ColorIndex変えるだけですよね)。  ・これを決まったセル範囲分繰り返す(For文でもなんでも使えばいいかと)。 というのを考えているのですが(考えた内に入らないような)、 ここで最も重要な「セルの罫線の色を取得する」というのは、どのように記述すればよいでしょうか。

  • エクセルの罫線・列の幅について

    ◎罫線  例えば、4つの横並びのセル1つずつに破線で  左側に罫線を引きます。更にその4つのセルを  1つのセルと考えて実線で斜線を引きたいのですが  両方はできないんです。セルの統合をすれば斜線は  引けますが、1つずつに左側の破線が引けなくなり逆に  セルを統合しないとセル1つずつに左側の破線と斜線が  表示されてしまいます。どうすれば良いのでしょうか。 ◎列幅  例えば、Cの列幅を10行目から20行目間だけ広くする  ということはできるのでしょうか。  (Cの列幅を行によって任意で設定するという意味です。) 同シート内で2種類以上の表を作成しようとすると一方で Cの列幅は狭くても良いが、その一方ではかなり広くしないと 文字が表示し切れないということがあるので(それぞれに罫線も引く) 列幅を行を指定して設定できないのかぁと思っています。 以上、2点うまく質問できないのですがエクセル初心者からの 質問です。ご回答お願いします。

専門家に質問してみよう