[[20161021220017]] 『セルに罫線が引かれているかを調べたい』(じゃみん) ページの最後に飛ぶ

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

 

『セルに罫線が引かれているかを調べたい』(じゃみん)

指定したセルの右側に罫線(セル右に2番目に太い実線)が引かれているかを調べる方法はありますか?

セルC72に何かしらの関数を入れるとC10のセルの右側に罫線が引かれているかというもので、現在はcolorcount(C$10:C$42,$B64)を使い、C$10:C$42までの範囲でB64と同じ色を使っていたら数を数える関数を使っています。

このcolorcount関数のように、セルC72に何かしらの関数を入れるとC10のセルの右側に罫線が引かれているかを知りたいのです。(colorcount関数ではをしていますが、今回はひとつのセルに対してです。)

・C10に罫線が使われていれば、C72に"◯"
・D10に罫線が使われていれば、D72に"◯" .....

・C11に罫線が使われていれば、C73に"◯"
・D11に罫線が使われていれば、D73に"◯"

といった感じです。
わかり辛いかもしれませんが、ご存じの方がいらっしゃいましたらご教授ください。
よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 つまり、今、colorcount という名前の UDF(マクロ)をシート上で関数として使っているということですね。
 それとおなじように、別のUDF(マクロ)を使って、シート上で使いたいということですね。

(β) 2016/10/21(金) 22:53


(β) 様

お返事いただき大変感謝しております。
おっしゃっているように、「別のUDF(マクロ)を使って、シート上で使いたい」ということです。

よろしくお願いいたします。

(じゃみん) 2016/10/21(金) 22:57


 それでは。(2番目に太いというのが、これであっているのかどうか不安ですが)

 Function CheckBorder(r As Range) As String
    With r.Borders(xlEdgeRight)
        If .LineStyle = xlContinuous And .Weight = xlMedium Then CheckBorder = "○"
    End With
 End Function

 C72 に =CheckBorder(C10)  これを右に下にフィルコピーではいかがですか。

(β) 2016/10/21(金) 23:09


(β) 様

完璧です。
完璧すぎます。

本当に本当に有難うございました!!
(じゃみん) 2016/10/22(土) 02:48


ちなみにですが、右に罫線では教えていただいた構文で間違い買ったのですが、左に罫線になるとその構文はどうなるのですか?

お手数ですが、教えていただければ助かります。

よろしくお願いいたします。

(じゃみん) 2016/10/22(土) 02:53


もうひとつだけよろしければ質問させていただけませんか?

そのセルに色がついているかいないかを知りたいのですが、例えば、C72のセルに
1,右に罫線 2,色がついている の2つを満たした場合、1となるようにすることはできませんか?

それで全てが解決します。

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

(じゃみん) 2016/10/22(土) 03:11


 それでは、以下のようなものを使いましょう。

 引数としては、まずセルを与えますが、そのあと、"Right" 、 "Left" 、 "Color" という文字列を
 必要なだけ、任意の順番で与えます。文字は大文字、小文字 いずれでもOKです。

 =CHECKCELL(C10,"RIGHT","COLOR","Left") 
 =CHECKCELL(C10,"Right","Left")
 =CHECKCELL(C10,"color","left")
 =CHECKCELL(C19,"Right")
 =CHECKCELL(C10,"Color")

 といった感じで使ってください。指定された文字列にある条件がすべて満たされていた場合に ○ をつけます。
 提示の条件の場合は、"Color" と "Right" を 指定します。(順番はどちらが先でもOKです)

 Function CheckCell(r As Range, ParamArray arg()) As String
    Dim p As Variant
    Dim ng As Long

    For Each p In arg
        ng = ng + 1
        Select Case LCase(p)
            Case "color"
                If r.Interior.ColorIndex <> xlNone Then ng = ng - 1
            Case "right"
                With r.Borders(xlEdgeRight)
                    If .LineStyle = xlContinuous And .Weight = xlMedium Then ng = ng - 1
                End With
            Case "left"
                With r.Borders(xlEdgeLeft)
                    If .LineStyle = xlContinuous And .Weight = xlMedium Then ng = ng - 1
                End With
        End Select
    Next

    If ng = 0 Then CheckCell = "○"

 End Function

(β) 2016/10/22(土) 07:26


本日の夜にでも早速試してみます。
毎日、煩雑な作業に追われており、本当に助かります。
ありがとうございます。
(じゃみん) 2016/10/22(土) 08:39

完璧です!!
バッチリ思い通りにできました!

色々と新しいアイディアも思いつき、これからはもう少し仕事が楽しく思えそうです。
本当に有難うございました。

(じゃみん) 2016/10/22(土) 22:33


コメント返信:

[ 一覧(最新更新順) ]


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