Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7414 / 13645 ツリー ←次へ | 前へ→

【38787】セルの罫線を認識して、色をつける方法 九州男児 06/6/10(土) 10:55 質問[未読]
【38788】Re:セルの罫線を認識して、色をつける方法 ぱっせんじゃー 06/6/10(土) 11:19 発言[未読]
【38789】Re:セルの罫線を認識して、色をつける方法 ぱっせんじゃー 06/6/10(土) 11:29 発言[未読]
【38790】Re:セルの罫線を認識して、色をつける方法 九州男児 06/6/10(土) 11:55 質問[未読]
【38795】Re:セルの罫線を認識して、色をつける方法 ぱっせんじゃー 06/6/10(土) 12:56 発言[未読]
【38796】Re:セルの罫線を認識して、色をつける方法 Kein 06/6/10(土) 12:58 回答[未読]
【38799】Re:セルの罫線を認識して、色をつける方法 九州男児 06/6/10(土) 14:21 質問[未読]
【38801】Re:セルの罫線を認識して、色をつける方法 Kein 06/6/10(土) 15:17 回答[未読]
【38802】Re:セルの罫線を認識して、色をつける方法 Kein 06/6/10(土) 15:19 発言[未読]
【39308】Re:セルの罫線を認識して、色をつける方法 九州男児 06/6/22(木) 7:50 お礼[未読]

【38787】セルの罫線を認識して、色をつける方法
質問  九州男児  - 06/6/10(土) 10:55 -

引用なし
パスワード
   教えてください。

セルが罫線で囲まれています。
そのセルを認識して、色を付ける方法を教えてください。
(罫線(破線)で囲まれたセル複数あります)

条件付書式で出来るかな?っと思いましたができませんでした。

何卒、ご教授お願いします。

【38788】Re:セルの罫線を認識して、色をつける方法
発言  ぱっせんじゃー  - 06/6/10(土) 11:19 -

引用なし
パスワード
   四方の一部ではなく、四方とも罫線で囲まれたセル
に着色、ということですか?

【38789】Re:セルの罫線を認識して、色をつける方法
発言  ぱっせんじゃー  - 06/6/10(土) 11:29 -

引用なし
パスワード
   とりあえず、セルのTopに罫線が設定されていたら
背景色を青にするサンプルです。

Sub test()
Dim c As Range
Dim r As Range
 For Each c In ActiveSheet.UsedRange
  If c.Borders(xlEdgeTop).LineStyle <> xlNone Then
    c.Interior.ColorIndex = 5
  End If
 Next
End Sub

【38790】Re:セルの罫線を認識して、色をつける方法
質問  九州男児  - 06/6/10(土) 11:55 -

引用なし
パスワード
   ▼ぱっせんじゃー さん:
早速の回答ありがとうございます。大変助かります。

ぱっせんじゃーさんの言うとおりにしたらできました。


さらに付け加えて質問してもよろしいでしょうか?

罫線にも種類があり、その罫線を選んで色を付けることは
可能でしょうか?

どうかよろしくお願いします。

【38795】Re:セルの罫線を認識して、色をつける方法
発言  ぱっせんじゃー  - 06/6/10(土) 12:56 -

引用なし
パスワード
   マクロの自動記録で出来たコードが
参考になると思います。

【38796】Re:セルの罫線を認識して、色をつける方法
回答  Kein  - 06/6/10(土) 12:58 -

引用なし
パスワード
   Dim Col As Integer
Dim C As Range

For Each C In ActiveSheet.UsedRange
  Col = 0
  Select Case C.Borders(xlEdgeTop).LineStyle
   Case xlContinuous: Col = 2
   Case xlDash: Col = 3
   Case xlDashDot: Col = 4
   Case xlDashDotDot: Col = 5
   Case xlDot: Col = 6
   Caes xlDouble: Col = 7
   Case xlSlantDashDot: Col = 8
  End Select
  If Col > 0 Then C.Interior.ColorIndex = Col
Next

などと、種類によってColorIndexの値を変えればよいでしょう。

【38799】Re:セルの罫線を認識して、色をつける方法
質問  九州男児  - 06/6/10(土) 14:21 -

引用なし
パスワード
   ▼Kein さん:
ありがとうございます。

しかし、セル1つをxlEdgeTop・xlEdgeBottom・xlEdgeLeft・xlEdgeRightで囲んでいるため、次のセルでは、xlEdgeBottomをxlEdgeTopと認識してしまいます。
(EXCELってややこしいですね。)

この場合、どのように対応したほうがいいのでしょうか?

今のところ、xlEdgeLeftでカウンタを取って奇数の時は色付け、偶数の時はそのままといったように考えているのですがどうもうまくいきません。

どうか他によい考えがあったら教えてください。

【38801】Re:セルの罫線を認識して、色をつける方法
回答  Kein  - 06/6/10(土) 15:17 -

引用なし
パスワード
   例えばセルの四辺が各々、直線×4(-8280),点と直線×4(-8268),点×4(-24756)
の罫線で囲まれている(数値は LineStyle の数値定数の合計)場合

Sub MyLineStyle()
  Dim C As Range
  Dim X As Long, Col As Long
 
  For Each C In ActiveSheet.UsedRange
   X = 0: Col = 0
   For Each B In C.Borders
     X = X + B.LineStyle
   Next
   Debug.Print X
   Select Case X
     Case -8280: Col = 5
     Case -8268: Col = 3
     Case -24756: Col = 6
   End Select
   If Col > 0 Then C.Interior.ColorIndex = Col
  Next
End Sub

なお数値定数の合計は、四辺を同じ種類の罫線で囲っているセルを1つ選択し

Sub Test()
  Dim X As Long

  For Each B In ActiveCell.Borders
   X = X + B.LineStyle
  Next
  MsgBox X
End Sub

を実行すれば、取得できます。

【38802】Re:セルの罫線を認識して、色をつける方法
発言  Kein  - 06/6/10(土) 15:19 -

引用なし
パスワード
   >Debug.Print X
は、削除して下さい。(こちらでのチェック用でしたので)

【39308】Re:セルの罫線を認識して、色をつける方法
お礼  九州男児  - 06/6/22(木) 7:50 -

引用なし
パスワード
   Kein さん へ

返事がだいぶ遅れてしまって申し訳ありません。

Keinさんのおかげで作ることが出来ました。ありがとうございます。

また、質問すると思いますのでその時もよろしくお願いします。

7414 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free