プロが教える店舗&オフィスのセキュリティ対策術

アクティブセルで色を付けることは出来ましたが
もともとのセルにはいろいろな色(解りやすくするため)がついています。
色がついている為に赤の枠太線でわかりやすくしたいです。

初心者で申し訳ございません。
何卒よろしくお願いいたします。

質問者からの補足コメント

  • もともとの色は、そのままの状態でお願いいたします。

      補足日時:2015/12/13 12:34
  • すみません。セルにもともと色を選択しているものはそのままで大丈夫でした。
    条件付きで文字列で色を変化させています。
    そちらは、無理でしょうか。

    No.4の回答に寄せられた補足コメントです。 補足日時:2015/12/13 16:10

A 回答 (6件)

こんばんは!



一例です。
前提条件として
① 各セルに罫線(枠線)の設定はしていない。 
② 罫線に関する条件付き書式の設定はしていない。
② 1行目には最終列まで・A列には最終行までデータが入っている。
(1行目で最終列・A列で最終行を取得しているため)
とします。

シートモジュールですので
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
セルを選択してみてください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から//
Dim lastRow As Long, lastCol As Long, c As Range, myArea As Range
lastRow = Cells(Rows.Count, "A").End(xlUp).Row '←A列で最終列を取得//
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column '←1行目で最終行を取得//
If Target(1).Row <> Target(Target.Count).Row Then
MsgBox "1行のみ選択してください"
Exit Sub
End If
Application.ScreenUpdating = False
For Each c In Range("A:A")
If c.Row > lastRow Then Exit For
If c.Borders(xlEdgeLeft).ColorIndex = 3 Then
Set myArea = c.Resize(, lastCol)
With myArea
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
End With
Exit For
End If
Next c
If Target.Row > lastRow Or Target.Column > lastCol Then Exit Sub
Set myArea = Range(Cells(Target.Row, "A"), Cells(Target.Row, lastCol))
With myArea.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlMedium
End With
With myArea.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlMedium
End With
With myArea.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlMedium
End With
With myArea.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlMedium
End With
Application.ScreenUpdating = True
End Sub 'この行まで//

※ 枠線の設定をしてある場合は
枠線を消すようにしていますので、枠線の再設定のこーどが必要になります。

まずはこの程度で・・・m(_ _)m
    • good
    • 1
この回答へのお礼

ありがとうございます。
やりたかったことができました。
わかりやすくなりました。
ありがとうございました。

お礼日時:2015/12/14 11:10

NO4です。


>色の塗りつぶしはなしにしておりますが、白に自動設定されてしまいます。
>もともとセルに色づけされている色が白に変化してしまいます。
書式の設定の塗りつぶしのウィザードの右下にある クリア ではダメでしょうか。

>条件付きで文字列で色を変化させています。
>そちらは、無理でしょうか。
ちょっと、どうしているのか、どうしたいのか がわからないのですが・・・
    • good
    • 0
この回答へのお礼

すみません。
元々のセルに条件付きの文字列で色が設定されており、
そのセルの部分の色は白に変化してしまいます。
解りづらく申訳ございません。

お礼日時:2015/12/13 16:36

NO3です。


4、書式をクリックしてご希望の塗りつぶしの色や罫線を設定して OK、終了
の部分の設定で
4、書式をクリックしてご希望の罫線だけを設定して OK、終了
と思うのですが、ダメだったでしょうか。
この回答への補足あり
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
色の塗りつぶしはなしにしておりますが、白に自動設定されてしまいます。
もともとセルに色づけされている色が白に変化してしまいます。

罫線は選択することができました。できれば細い線しか設定できませんでした。

お礼日時:2015/12/13 16:07

>アクティブセルで色を付けることは出来ましたが


どの方法で設定されたのでしょうかね。
一例ですが
1、シート全てを選択、リボン ホーム 中央付近の 条件付き書式
2、新しいルール=> 数式を使って・・・
3、数式 =CELL("row")=ROW() を入れて 
4、書式をクリックしてご希望の塗りつぶしの色や罫線を設定して OK、終了
5、これだけでは、数式の 再計算をクリックしないので、再計算の機能をVBAで実行します。
6、シート名のタブを右クリック、コードの表示をクリックすると VBエディターが起動しますので
7、以下を張り付けて閉じます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
次からは、選択したセルの行にご希望の色、罫線が自動で表示されます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
こちらのやり方と一緒でございます。

もともとのセルには、色がついておりますので罫線だけを表示させたいのですが
方法は御座いますでしょうか。

お礼日時:2015/12/13 14:48

VBAのイベントプロシージャで可能と思われますが


どこからどこまでどのようにデータが入っているか、
アクティブセルにどうしたいのか、
などをもっと詳細に書くとよい回答が付くでしょう。
    • good
    • 1
この回答へのお礼

お返事ありがとうございます。
アクティブセルの1行の全体に枠太線を付けたいです。
データはA列よりM列400行ぐらいまで入っております。1つ1つのセルには、いろいろな色が付けております。その色を残して選択しているセルの行をわかりやすく枠線を付けたいです。

お礼日時:2015/12/13 13:36

>アクティブセルで色を付ける


これはVBAで?それとも条件付き書式で?

VBAなら記述の内容を
Selection.Borders.LineStyle = xlContinuous
Selection.Borders.Weight = xlThick
とするなどで対処できると思います。

条件付き書式の方はわかりません。
セルを選択してアクティブにしただけでは、上手く行の色が変更されないはずで、おそらくイベントプロシージャと組み合わせないとならないはずです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
条件付きで色を付けることはできました。

VBAは、やったことが無いのでわかりません。

もしよろしければ、VBAの設定の仕方をお教え頂けませんでしょうか。
何卒よろしくお願いいたします。

お礼日時:2015/12/13 12:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!