[[20080718230057]] 『日付が変わったら太罫線を引きたい』(aki) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付が変わったら太罫線を引きたい』(aki)

宜しく御願い致します

 B列を2行づつ使い、日付と曜日を入力しています
1行目は直接入力し
2行目は以下数式を使い表示しています

 7月18日	入力規則で直接入力
  (金)	=IF(B2="","",TEXT(B2,"(aaa)"))
 7月18日	入力規則で直接入力
  (金)	=IF(B4="","",TEXT(B4,"(aaa)"))
―――――――――――――――――――――――
 7月19日	入力規則で直接入力
  (土)	=IF(B6="","",TEXT(B6,"(aaa)"))
 7月19日	入力規則で直接入力
  (土)	=IF(B8="","",TEXT(B8,"(aaa)"))

 日付が変わったら太罫線を引きたいのですが
条件付設定では太線は引けませんので
過去ログを参照させていただきました
http://www.excel.studio-kazu.jp:80/cgi-bin/kazuwiki2.cgi?mycmd=read&mypage=[[20050106132419

 これに条件を当てはめ
書式−条件付書式で
 数式が =day($b2)=day($b4) で 細線に設定
として見たのですが、うまくいきませんでした。
どうぞご教授をお願いいたします。  (aki)


 こんな感じではいかがです?
 
 =AND(MOD(ROW(),2),DAY($B1)<>DAY($B3))
 
 (キリキ)(〃⌒o⌒)b

 マクロで作ってみました・・・

 Sub try()
 Dim i
  For i = 2 To Range("B65536").End(xlUp).Row - 1 Step 2
     Range("B" & i & ":D" & i).Select
       If Range("B" & i).Value <> Range("B" & i + 2).Value Then
          With Selection.Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .Weight = xlThick
                .ColorIndex = xlAutomatic
          End With
       Else
          With Selection.Borders(xlEdgeBottom)
               .LineStyle = xlContinuous
               .Weight = xlThin
               .ColorIndex = xlAutomatic
          End With
       End If
     Next
   Range("A1").Select
 End Sub

 検証していませんので間違っている可能性大です。
 間違っていたらどなたかご指摘をお願いします。(リイコ)

 2008/7/19 0:35一部修正

 スペルが間違ってますよ〜b
 
 >.LineStyle = xlContinuos
 .LineStyle = xlContinuous
 
 -追記-
 ・数式で、空欄を返している
 ・罫線を引くのは、曜日の下
 ・どうせ同じ処理をするなら、Withで纏めてしまう
 などを考えて、こんな感じに変更させていただきましたが、いかがでしょう?
 
Sub try2()
Dim i As Long
    For i = 2 To Range("B65536").End(xlUp).Row - 1 Step 2
        With Range("B" & i & ":D" & i).Offset(1).Borders(xlEdgeBottom)
            If Len(Range("B" & i)) Then
                If Range("B" & i).Value <> Range("B" & i + 2).Value Then
                    .LineStyle = xlContinuous
                    .Weight = xlThick
                Else
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                End If
            End If
        End With
    Next
End Sub
 
 #リイコさん、余計な事でしたらごめんなさいねmm
 (キリキ)(〃⌒o⌒)b


キリキさん リイコさん ありがとうございます

 条件付書式を入力しました。
=AND(MOD(ROW(),2),DAY($B1)<>DAY($B3))
実際はB5から始まってますので
=AND(MOD(ROW(),2),DAY($B5)<>DAY($B7))
としまして実施したところ
7月18日
(金)
7月18日
――――――――
(金)
7月19日
(土)
7月19日
――――――――
(土)

 このように、線が入ってしまいます

 Sub try2()
Dim i As Long
    For i = 4 To Range("B65536").End(xlUp).Row - 1 Step 2
        With Range("B" & i & ":D" & i).Offset(1).Borders(xlEdgeBottom)
            If Len(Range("B" & i)) Then
                If Range("B" & i).Value <> Range("B" & i + 2).Value Then
                    .LineStyle = xlContinuous
                    .Weight = xlThick
                Else
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                End If
            End If
        End With
    Next
End Sub

 で試しましたところ
7月18日
――――――――
(金)
7月18日
(金)
7月19日
――――――――
(土)
7月19日
(土)

 に線が入ってしまいます
自分もがんばって検証します
宜しく御願い致します。   (aki)


 >1行目は直接入力し
 >2行目は以下数式を使い表示しています

 > 7月18日	入力規則で直接入力
 >  (金)	=IF(B2="","",TEXT(B2,"(aaa)"))
 > 7月18日	入力規則で直接入力
 >  (金)	=IF(B4="","",TEXT(B4,"(aaa)"))
 1行目からに直接入力しているのに、
 2行目の数式は何で自分のセルを参照しているのでしょうか?

 とりあえず、2行目日付、3行目数式といったパターンで。
 =AND(B2<>B4,MOD(ROW(B2),2)=1,ISNUMBER(B2)=FALSE)
 BJ


 あぁぁ・・・
 
 ご提示いただいた表の数式が
 >  (金)	=IF(B2="","",TEXT(B2,"(aaa)"))
 こうなっていた為、
 2行目からで考えていました。。。
 
 こんな感じではいかがでしょう?
 
 条件付書式
 B2好きな範囲を範囲指定し、
 書式 → 条件付書式
 「数式が」
 =AND(MOD(ROW(),2)=0,DAY($B1)<>DAY($B3))
 
 マクロ
 >With Range("B" & i & ":D" & i).Offset(1).Borders(xlEdgeBottom)
 の、Offset(1)を取ってしまい
 With Range("B" & i & ":D" & i).Borders(xlEdgeBottom)
 
 (キリキ)(〃⌒o⌒)b

 キリキさん、ありがとうございます。
 余計なことなんてとんでもないです。勉強になります。
 外に出ていたので、返信が遅くなりすみません。

 質問者さん

 Sub try()
 Dim i
  For i = 2 To Range("B65536").End(xlUp).Row - 1 Step 2
 '       ~~~ここが2なのは、データに見出しが無いときです。1行目が見出しなら3に。
 キリキさんのご指摘を受けスペルは修正いたします。(リイコ)

キリキさんありがとうございます
 =AND(MOD(ROW(),2)=0,DAY($B1)<>DAY($B3))
自分の設定がいけないのか、変化がありませんでした

 Sub try2()
Dim i As Long
    For i = 6 To Range("B65536").End(xlUp).Row - 1 Step 2
        With Range("B" & i & ":D" & i).Borders(xlEdgeBottom)
            If Len(Range("B" & i)) Then
                If Range("B" & i).Value <> Range("B" & i + 2).Value Then
                    .LineStyle = xlContinuous
                    .Weight = xlThick
                Else
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                End If
            End If
        End With
    Next
End Sub

見出しが4行目なので「6」に設定し
こちらは完璧に動作しました
しかし行が足りないとき

Sub 挿入()

    ActiveSheet.Unprotect
    Selection.EntireRow.Insert
    Selection.EntireRow.Insert
    Sheets("基本データ").Select
    Range("F2:Q3").Select
    Selection.Copy
    Sheets("Sheet1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveCell.Offset(0, 0).Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub

 このようなこてこての式で挿入をしています
この挿入をしないときには、綺麗に上記マクロで実施するのですが
挿入を1回(2行)でもしてしまうと
Border Line Styleプロパティを設定できませんと表示されてしまいます
コピーは隣のシートからしてきてるのですが、これって関係してるんですか? (aki)

BJさま ありがとうございます
 =AND(B2<>B4,MOD(ROW(B2),2)=1,ISNUMBER(B2)=FALSE)
あいにく変化は見られませんでした


 条件付設定では太線は引けませんので 
 (条件が3以下なら)
条件付書式で設定できますよ。(逆の発想)

 >見出しが4行目なので「6」に設定し
 >こちらは完璧に動作しました
 実際の表の構成をもっと正確に提示したほうがいいですよb
 
 どのような表があって、どのようなシートがあるのでしょう?
 
 こんな感じで提示してみませんか?
 
Sheet1	[A]	[B]	[C]
[1]			
[2]			
[3]			
[4]			
[5]			
[6]			
 
Sheet2	[A]	[B]	[C]
[1]			
[2]			
[3]			
[4]			
[5]			
[6]			
 
 >しかし行が足りないとき
 >このようなこてこての式で挿入をしています
 どのようなときに行が足りなくなるのでしょう?
 直接は関係ない気がしますが。。。
 
 情報は正確に小出しをせずに提示したほうが、解決が早いかもしれませんね^^
 
 #本日は、これ以上レスできないかもしれません・・・
 (キリキ)(〃⌒o⌒)b

キリキさん ありがとうございました
 マクロはもっともっと勉強しないとどうにもならないです
この領域って自分には未知の世界です
条件付書式ですが
おっしゃるとおり情報不足ですね
決して小出しにしてるのではなく
言葉が足りないのですね
本当に申し訳ありません
=AND(MOD(ROW(),2)=0,$B5=$B7)
こんな感じで思うようになりました
たくさんのご教授ありがとうございました
また、今後ともご指導宜しくお願いいたします
失礼します    (aki)

 ご自身で解決できたようで良かったですね^^

 (キリキ)(〃⌒o⌒)b

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.