- ベストアンサー
エクセルで自動的にセルの外枠を囲むには
あるシートの中で、複数のセルを選択状態にします。 選択状態になっているセルは、文字が入力されているものとされていないものがあります。 文字が入力されているセルのみ、セルの外枠を罫線で囲むようにしたいのですが。 一括して処理したいのですが、やり方をおわかりになる方がいましたら教えて下さい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんな感じでしょうか? 範囲を選択してから実行すればOKです。 因みに空白以外の場合に罫線が引かれます。 文字列のみと言うのであれば、下記の「If i.Value <> "" Then」の部分を 「If VarType(i.Value) = vbString Then」に変えればいいです。 Sub test() Dim MyRag As Range, i As Range Set MyRag = Selection For Each i In MyRag If i.Value <> "" Then i.Borders(xlEdgeLeft).LineStyle = xlContinuous i.Borders(xlEdgeTop).LineStyle = xlContinuous i.Borders(xlEdgeBottom).LineStyle = xlContinuous i.Borders(xlEdgeRight).LineStyle = xlContinuous End If Next End Sub
その他の回答 (5)
- 134
- ベストアンサー率27% (162/600)
もしかして…ですけど、条件付き書式でも、罫線の有無を選択できるので、対応が可能かもしれない… なんて、思ったりしました。 相対&絶対参照とかの指定次第ですけど
お礼
ご回答ありがとうございました。
- telescope
- ベストアンサー率54% (1069/1958)
こんな方法もあります。 複数のセルを選択状態にします。 「編集」-「ジャンプ」で「セル選択」ボタンを押し、 [定数]を選びます。[文字]以外のチェックをはずしOKボタンを押します。 文字の入ったセルのみ選択されます。今状態で罫線の設定をします。
お礼
ご回答ありがとうございました。 うまくいきました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >複数のセルを選択状態にします。 という条件になると、どうしても、マクロになってしまいますね。 '場所は、一般モジュールならどこでも可 Sub CirclingValuedCells() Dim c As Range Dim i As Variant Dim j As Variant Dim r As Range Set r = Selection If TypeName(r) <> "Range" Then Exit Sub Application.ScreenUpdating = False For i = 5 To 12 r.Borders(i).LineStyle = xlNone Next i For Each c In r If Not IsEmpty(c.Value) Then For j = 7 To 10 With c.Borders(j) .LineStyle = 1 .Weight = 2 ' 線の太さ 2 以上 .ColorIndex = 1 '色 black End With Next j End If Next c Application.ScreenUpdating = True Set r = Nothing End Sub なお、この種のマクロは、Weight と ColorIndex は、省略すると他人の環境ではうまくいかないことがありますから、省略することは出来ません。
お礼
ご回答ありがとうございました。 うまくいきました。
- chiwa-CF
- ベストアンサー率51% (36/70)
条件付き書式を使う方法もあります。 (1)複数のセル(今回は例としてA1~C4とする)を選択状態にする。 (2)メニューバー「書式(O)-条件付き書式(D)」をクリック (3)左側のプルダウンメニューから「数式が」を選択 (4)右側のテキストボックスに「=NOT(ISBLANK(A1)」と記述する(複数選択したうちの一番左上のセルを(A1の代わりに記述する))。 (5)「書式(F)」ボタンをクリック (6)「罫線」タブをクリックし、「外枠」をクリックし、OKボタンをクリック (7)もう一度OKボタンをクリック これでもできます。 ただ、これですと(1)で選択状態にしたセルに文字を書き込むと罫線が表示され、 消すと罫線が消えるようになります。 ですので、要望のものとは違うかもしれません。
お礼
ご回答ありがとうございました。 うまくいきました。
- keirika
- ベストアンサー率42% (279/658)
以下のマクロを実行すれば出来ると思います Sub Macro1() Selection.SpecialCells(xlCellTypeConstants, 3).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End Sub
お礼
ご回答ありがとうございました。 うまくいきました。
お礼
ご回答ありがとうございました。 うまくいきました。