プロが教えるわが家の防犯対策術!

罫線の斜線を自動で引くマクロを教えてください

1行目に日付、2行目に曜日、3行目以降に2行目の土日に対応する列に右上がりの罫線を自動で入るマクロを教えてください

1行目 1  2  3  …
2行目 土 日 月 …
3行目 / /

よろしくお願いします

祝日も入れたいのでが…

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

  • 追加の質問です

    3~5行目、10~15行目に斜線を入れる設定を教えてください

    祝日に関してですが、
    仮に、A20に年、B20に月を入力するとして、祝日シートのH1~H30に祝日を入れて置くとことした場合に斜線を入れたいです

    何卒よろしくお願いします

      補足日時:2018/06/07 22:35

A 回答 (5件)

No.2・3です。



補足の件に関して、
斜線を表示したいシートのA1セル以降1行目にシリアル値で日付が入っているのですね。
たとえばA1セルの表示形式をユーザー定義から d としておき
=IF(MONTH(DATE($A20,$B20,COLUMN(A1)))=$B20,DATE($A20,$B20,COLUMN(A1)),"")

という数式を入れ月末のAE1セルまでフィル&コピーしている!
A2セルは
=TEXT(A1,"aaa")
でもなんでもかまいません。

そうなっているという前提でのコードです。

>祝日シートのH1~H30に祝日を入れて置くとことした場合
祝日データがあるシート名は「祝日」としています。

>A20に年、B20に月を入力するとして
となっているので、どちらかのセルデータが変化した時点のチェンジイベントにしてみました。
シートモジュールにしてください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim j As Long
If Intersect(Target, Range("A20:B20")) Is Nothing Or Target.Count > 1 Then Exit Sub
If Target <> "" Then
For j = 1 To 31 '//A列~AE列まで//
With Union(Cells(3, j).Resize(3), Cells(10, j).Resize(6)).Borders(xlDiagonalUp)
.LineStyle = xlNone
If Cells(1, j) <> "" Then
If WorksheetFunction.Weekday(Cells(1, j), 2) > 5 Or _
WorksheetFunction.CountIf(Worksheets("祝日").Range("H:H"), Cells(1, j)) > 0 Then
.LineStyle = xlContinuous
End If
Else
.LineStyle = xlNone
End If
End With
Next j
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

ありがとうございました
バッチリできました

またまた、教えて欲しいことがありまして
今回の応用編なのですが、
日付の入っているセルがD1~AH1で、A1~C1まで文字が入っている場合はどうなりますか?

* * * 1  2  3  …
* * * 土 日 月 …
* * * / /

お礼日時:2018/06/09 23:29

続けてお邪魔します。



>日付の入っているセルがD1~AH1で・・・

1行目の数式はまったくそのままD1セルに入れてAH1セルまでフィル&コピーで大丈夫です。
そしてコードの方は
>For j = 1 To 31 '//A列~AE列まで//
の1行を
>For j = 4 To 34
に変更するだけでいけます。

※ D列~AH列までのループになります。m(_ _)m
    • good
    • 0
この回答へのお礼

いろいろありがとうございます

お礼日時:2018/06/10 08:30

No.2です。



祝日に関してですが、
1行目もしくは2行目がシリアル値であり、
「祝日」のデータをどこか(もちろん別シートでもOK)
に作成しておけば可能です。

そこ辺の詳細が不明なので、この程度でごめんなさい。m(_ _)m
    • good
    • 0

こんばんは!



一例です。
自動ではなく、ご自身でマクロを実行する必要がありますが・・・

Sub Sample1()
Dim j As Long
For j = 1 To Cells(2, Columns.Count).End(xlToLeft).Column
With Cells(3, j).Borders(xlDiagonalUp)
If Cells(2, j) = "土" Or Cells(2, j) = "日" Then
.Weight = xlThin
Else
.LineStyle = xlNone
End If
End With
Next j
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます

追加ですが、別なシートに祝日をいれておいて、祝日にも斜線をいれる方法ありますか

お礼日時:2018/06/06 23:03

マクロってVBA?


コーディングするの?
斜線でなく色付けなら、条件付き書式でも可能ですけど。
条件付き書式で斜線が出来たかは、今は確認出来ないなぁ
    • good
    • 0
この回答へのお礼

VBAです
条件付き書式では、罫線の斜線はできないので…

お礼日時:2018/06/06 22:57

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A