[[20190318165830]] 『定休と書いてあったら5行分消す』(luke) ページの最後に飛ぶ

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

 

『定休と書いてあったら5行分消す』(luke)

名前|出勤|時間|@|@|


A |休み|9時 |@|@|





B |定休|9時 |@|@|





C |休み|9時 |@|@|





分かりにくいかもしれませんが、定休となっているBの名前から5行分非表示にして、上に詰めていきたいのですが先月からエクセルを触り始めて何を使って書けばいいかまだよくわかりません、、、教えてもらいたいですお願いします。

< 使用 Excel:Excel2016、使用 OS:MOUSE COMPUTER >


こんにちは。非表示にしたい行の一番左の数字の番号をドラッグ選択して選び、右クリックをして非表示を選んでみてください。
(バンビ) 2019/03/18(月) 17:34

 こいつを
     |[A] |[B] |[C] 
 [1] |名前|出勤|時間
 [2] |A   |休み|9時 
 [3] |    |    |    
 [4] |    |    |    
 [5] |    |    |    
 [6] |    |    |    
 [7] |B   |定休|9時 
 [8] |    |    |    
 [9] |    |    |    
 [10]|    |    |    
 [11]|    |    |    
 [12]|C   |休み|9時 
 [13]|    |    |    
 [14]|    |    |    
 [15]|    |    |    
 [16]|    |    |    

 こうしたいってことでしょうか?
     |[A] |[B] |[C] 
 [1] |名前|出勤|時間
 [2] |A   |休み|9時 
 [3] |    |    |    
 [4] |    |    |    
 [5] |    |    |    
 [6] |    |    |    
 [12]|C   |休み|9時 
 [13]|    |    |    
 [14]|    |    |    
 [15]|    |    |    
 [16]|    |    |    
    Sub 定休非表示()
        Dim r As Range
        Dim i As Long
        Cells.EntireRow.Hidden = False
        For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
            If Cells(i, "B").Value = "定休" Then
                If r Is Nothing Then
                    Set r = Cells(i, "B").Resize(5).EntireRow
                Else
                    Set r = Union(r, Cells(i, "B").Resize(5).EntireRow)
                End If
            End If
        Next i
        r.Hidden = True
    End Sub

(稲葉) 2019/03/18(月) 17:43


おはようございます。
バンビさん稲葉さんありがとうございます。

お察しの通りです!言葉足らずにすいません。。。
自分で考えてみてBVAの書き方がいまいちわかりませんでした!
稲葉さん早速使ってみます!
また何かあったらよろしくお願いします。
(luke) 2019/03/19(火) 08:47


  Sub 定休非表示()
        Dim r As Range
        Dim i As Long
        Cells.EntireRow.Hidden = False
        For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
            If Cells(i, "B").Value = "定休" Then
                If r Is Nothing Then
                    Set r = Cells(i, "B").Resize(5).EntireRow
                Else
                    Set r = Union(r, Cells(i, "B").Resize(5).EntireRow)
                End If
            End If
        Next i
        r.Hidden = True
    End Sub

すいません。最後の二行のr.Hidden = Trueでデバッグが出るんですがどう直せばいいですかね。。。

(luke) 2019/03/19(火) 09:08


 定休日がないからだと思います。
 If Not r Is Nothing Then r.Hidden = True
 でどうでしょう?
(稲葉) 2019/03/19(火) 09:31

稲葉さん対応ありがとうございます。

r.Hidden = True
この部分でデバッグかかってしまいます。。。
(luke) 2019/03/19(火) 09:41


 直したコード全部挙げてもらえませんか?
(稲葉) 2019/03/19(火) 09:46

Sub 非表示()
' 定休者非表示 Macro

    Dim r As Range
    Dim i As Long
    Cells.EntireRow.Hidden = False
    For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
        If Cells(i, "B").Value = "定休" Then
            If r Is Nothing Then
                Set r = Cells(i, "B").Resize(5).EntireRow
            Else
                 Set r = Union(r, Cells(i, "B").Resize(5).EntireRow)
            End If
        End If
    Next i
   If Not r Is Nothing Then r.Hidden = True
End Sub

これです!お願いします。
(luke) 2019/03/19(火) 09:51


 うーーん
 シートの保護が掛かっているとか?

(稲葉) 2019/03/19(火) 09:55


 r.EntireRow.Hidden = True

  にしてください。
(でれすけ) 2019/03/19(火) 10:00

でれすけさんありがとうございます。
しかし、うまくいきません。。。

保護は掛かってなさそうです。。。

 |[A] |[B] |[C] 
 [1] |名前|出勤|時間
 [2] |A   |休み|9時 
 [3] |    |    |    
 [4] |    |    |    
 [5] |    |    |    
 [6] |    |    |    
 [7] |B   |定休|9時 
 [8] |    |    |    
 [9] |    |    |    
 [10]|    |    |    
 [11]|    |    |    
 [12]|C   |休み|9時 
 [13]|    |    |    
 [14]|    |    |    
 [15]|    |    |    
 [16]|    |    |    
 [17]|D   |休み|9時    
 [18]|    |    |    
 [19]|    |    | 
 [20]|    |    |    
 [21]|    |    |    
 [22]|    |    |    
 [23]|E   |休み|9時   
 [24]|    |    |    
 [25]|    |    |    
 [26]|    |    | 
 [27]|    |    |    
 [28]|    |    |    
   -----------   

実際はここまで長くなっていてもう少し伸びるかと思われます。
ここは関係ないですかね??
(luke) 2019/03/19(火) 10:05


 定休が二つ以上あると、でれすけさんのご指摘通りEntireRowにしないとダメっぽいです。
 私はそれで解決したのですが、ダメですかね?
(稲葉) 2019/03/19(火) 10:14

やってみたところメソッドをサポートしていませんと出ました。。。
なんでしょうこれは。。。
また修正したものです。

Sub 非表示()
' 定休者非表示 Macro

    Dim r As Range
    Dim i As Long
    Cells.EntireRow.Hidden = False
    For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
        If Cells(i, "B").Value = "定休" Then
            If r Is Nothing Then
                Set r = Cells(i, "B").Resize(5).EntireRow
            Else
                 Set r = Union(r, Cells(i, "B").Resize(5).EntireRow)
            End If
        End If
    Next i
   r.EntireRow.r.Hidden = True
End Sub

やはり下の2行でコンパイルエラーになります。。。
(luke) 2019/03/19(火) 10:17


 r.EntireRow.Hidden = True
 こうっす
(稲葉) 2019/03/19(火) 10:18

あ。。。
できました!見逃し凡ミスすいません。。。
稲葉さん、でれすけさんありがとうございます!!
(luke) 2019/03/19(火) 10:25

あとすいません。。。
再表示も教えていただけると嬉しいです。。。!!
(luke) 2019/03/19(火) 10:32

 でれすけさんフォローありがとうございました。

 再表示は
     Cells.EntireRow.Hidden = False
 これです。
(稲葉) 2019/03/19(火) 11:46

稲葉さん最後までありがとうございます!!
どちらもできました!!
また見かけたらよろしくお願いします!!
(luke) 2019/03/19(火) 12:06

コメント返信:

[ 一覧(最新更新順) ]


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