
VBA 罫線について
B列3行目から21行毎にデータがはいります。
データがはいったらデータが入った場所に罫線が入るようになっているのですが、B列にデータがはいったら下に17行ずつ罫線をいれたいです。どのように変えたらよいのでしょうか。
ご教示お願いいたします。
Option Explicit
Sub RuleSet1()
Dim I As Long
For I = 1 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(I, 2) <> "" Then
Range(Cells(I, 2), Cells(I, 3)). _
Borders(xlEdgeBottom).LineStyle = xlContinuous
End If
Next I
End Sub
No.5ベストアンサー
- 回答日時:
!格子ではなく 下罫線でしたね
Dim I As Long
For I = 1 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(I, 2) <> "" Then
Cells(I, 2).Resize(18).Borders(xlEdgeBottom).LineStyle = xlContinuous
Cells(I, 2).Resize(18).Borders(xlInsideHorizontal).LineStyle = xlContinuous
End If
Next I
Cells(I, 2).Resize(19).Borders(xlInsideHorizontal).LineStyle = xlContin
だけでも良いですかね・・・
No.6
- 回答日時:
No3です。
>「このセルにデータがあった場合に、下17行分に罫線を引く」
>といったことが条件付書式できるのかまた調べてみます。
できるであろうと考えたから、回答しています。
例えば、
「当該セルよりも(自身も含めて)上に17個のセルに何らかの値があれば、下罫線を引く」
という条件で良ければ、
B:C列を選択し、B1セルがアクティブな状態で、
1)「条件付き書式」-「新しいルール」から「数式を使用して~~」を選択
2)下部の数式欄に以下の式を入力
=COUNTA(OFFSET($B$1,MAX(ROW()-17,0),,MIN(ROW(),17)))>0
3)「書式」で下側の罫線を設定し、「OK」を押下げ
で、できると思います。
※ 設定条件が違う場合は、当然、設定する式も変わります。
ありがとうございます。
こんなこともできるんですね…実際にやってみて、驚きました…。条件付書式でできるのは知らなかったのでとても勉強になりました。
No.4
- 回答日時:
>B列の3行目にデータがあった場合、B3〜B20の17行分に下罫線をいれたいです。
ご教示お願いいたします。と言う事はRange(Cells(I, 2), Cells(I, 3))では無いですね
要件仕様に不明な点がありますが
Resizeを使って
Dim I As Long
For I = 1 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(I, 2) <> "" Then
Cells(I, 2).Resize(18).Borders.LineStyle = True
End If
Next I
で実現可能と存じます
ただ、#3様がご指摘されている
不要罫線の削除や実行トリガーなどが課題として残りますね
罫線の種類やResize、Offsetなどについて調べる事をお勧めします
Borders.LineStyle = True 範囲の格子罫線です
No.3
- 回答日時:
こんばんは
直接の回答ではありませんけれど・・・
どのような使い方をなさるのかわかりませんけれど、ご提示のコードだと罫線を記入するだけで、消すことはしていないので、仮にセルの値を削除しても罫線は残ったままになりますね。
また、マクロだと実行しない限り罫線は反映されません。
思い付き的で申し訳ありませんけれど、
当該シートに「条件付き書式」で罫線を記すように設定しておけば良いのではないでしょうか?
こちらの方法であれば、セルに値を入力すると罫線も即時に反映されますし、マクロを実行する必要もありませんので。
ありがとうございます!!
条件付書式は検索結果に色をつけるといったようなことでしか使用したことがなかったので、思い付かなかったです。
「このセルにデータがあった場合に、下17行分に罫線を引く」といったことが条件付書式できるのかまた調べてみます。
No.2
- 回答日時:
#1です
ついでなのですが、たぶんOffsetで設定するのが好ましいと思います
Offsetで考えると 下記のような考え方が出来、良いように思います
Sub RuleSet_01()
Dim I As Long
Dim r As Range
For I = 1 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(I, 2) <> "" Then
If r Is Nothing Then
Set r = Range(Cells(I, 2), Cells(I, 3)).Offset(17)
Else
Set r = Union(r, Range(Cells(I, 2), Cells(I, 3)).Offset(17))
End If
End If
Next I
r.Borders(xlEdgeBottom).LineStyle = xlContinuous
End Sub
Unionについては、お調べください
ありがとうございます!!
教えていただいたものですと、17行目(B20)のみに罫線がひかれます。説明不足で申し訳ありません。B列の3行目にデータがあった場合、B3〜B20の17行分に下罫線をいれたいです。ご教示お願いいたします。
No.1
- 回答日時:
こんばんは
読解力が無く申し訳ないのですが、こういう事?
xlEdgeBottomなので
If Cells(I, 2) <> "" Then
Cells(I, 2).Resize(18, 2). _
Borders(xlEdgeBottom).LineStyle = xlContinuous
End If
または
If Cells(I, 2) <> "" Then
Range(Cells(I, 2), Cells(I, 3)).Offset(17). _
Borders(xlEdgeBottom).LineStyle = xlContinuous
End If
Next I
2つの処理コードは、大分意味は違うけれど同じ結果が出ると思います
意味の違いについては
_
Borders(xlEdgeBottom).LineStyle = xlContinuous をselectに変えると
分かると思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access 外部データ インポー...
-
キャッシュとバッファの違いは?
-
LVMでHDDが壊れた時の対応
-
データベースの2GBって・・・?
-
カンマ区切りで格納するカラム...
-
listener.logが肥大化
-
ハイフン無しの電話番号データ...
-
オラクルのLONG RAW型のテーブ...
-
Access Oracle環境の切替方法
-
エクセルのフォームについて(...
-
アクセスの日付/時刻型で標準...
-
sqlite2とsqlite3の違いについて
-
ADODB.Recordset エラー '800a0...
-
リスト形式の表とデータベース...
-
DB2 UDBって?
-
ODBC経由の処理が遅い
-
データベースに接続したままの...
-
型 varchar から型 numeric へ...
-
「オフセット値」とは?
-
Accessのデータベースの容量見...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スタライズとは、どういう意味...
-
Access 外部データ インポー...
-
キャッシュとバッファの違いは?
-
値がこの列の整合性制約に違反...
-
LVMでHDDが壊れた時の対応
-
エクセルを取引先に渡したら何...
-
HDDが読み取れません
-
SQL Server にファイルを登録、...
-
C#でint型をIntPtr型に変換した...
-
VBとExcelどっちが適してます?
-
自作のデータを配布したい
-
ホームページにMPG3を載せたい
-
アクセスでホームページのデー...
-
編集しているフォトショップの...
-
石川県金沢市、PCでエクセルデ...
-
MACアドレスの意味は?
-
ADOでデータを送ってる最中はア...
-
javascriptでデータ検索画面み...
-
GerberデータからBmpデータへの...
-
Outlook連絡先で”通常の電話”を...
おすすめ情報