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.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に変えると
分かると思います
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.3
- 回答日時:
こんばんは
直接の回答ではありませんけれど・・・
どのような使い方をなさるのかわかりませんけれど、ご提示のコードだと罫線を記入するだけで、消すことはしていないので、仮にセルの値を削除しても罫線は残ったままになりますね。
また、マクロだと実行しない限り罫線は反映されません。
思い付き的で申し訳ありませんけれど、
当該シートに「条件付き書式」で罫線を記すように設定しておけば良いのではないでしょうか?
こちらの方法であれば、セルに値を入力すると罫線も即時に反映されますし、マクロを実行する必要もありませんので。
ありがとうございます!!
条件付書式は検索結果に色をつけるといったようなことでしか使用したことがなかったので、思い付かなかったです。
「このセルにデータがあった場合に、下17行分に罫線を引く」といったことが条件付書式できるのかまた調べてみます。
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.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」を押下げ
で、できると思います。
※ 設定条件が違う場合は、当然、設定する式も変わります。
ありがとうございます。
こんなこともできるんですね…実際にやってみて、驚きました…。条件付書式でできるのは知らなかったのでとても勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルから、パワーポイント...
-
キャッシュとバッファの違いは?
-
値がこの列の整合性制約に違反...
-
Access 外部データ インポー...
-
アクセスVBAからエクセルの操作
-
linuxのシェルかpythonでsqlのc...
-
自作Androidアプリのデータ引き...
-
スタライズとは、どういう意味...
-
CSV形式での集計
-
CD-Rに入っているはずのデータ...
-
ホームページ上のCSVファイルを...
-
Thunderbirdのインポートの処理...
-
AS400へAccessから接続す...
-
今年亡くなった有名人を一発で...
-
コンピュータ用語、データベー...
-
Microsoft Accessについて
-
汎用カード型のデータベースソ...
-
データベースの最適化をマクロ...
-
リスト形式の表とデータベース...
-
SQLを使いこなしている人が ETL...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュとバッファの違いは?
-
VB.netのADOってなんですか?
-
Thunderbirdのインポートの処理...
-
SQL Server にファイルを登録、...
-
エクセルから、パワーポイント...
-
スタライズとは、どういう意味...
-
値がこの列の整合性制約に違反...
-
UNIX時間をEXCEL上で日付・時間...
-
Access 外部データ インポー...
-
CSVファイルの重複チェック
-
LVMでHDDが壊れた時の対応
-
C#でint型をIntPtr型に変換した...
-
EXCELの最大データ数
-
エクセルでのテプララベル作成
-
Perlで、「が」を、「...
-
VBA 連続する名前ごとに集計
-
Accessでタブ区切りのテキスト...
-
VBでXMLデータをMS-ACCESS2000...
-
エクセルのマクロ
-
REST APIでkintoneのレコード追...
おすすめ情報