この人頭いいなと思ったエピソード

以下のような構文で動作あ実行されるのですが、一行ずつ読み込んでいるようでして、
とても時間がかかってしまいます。
どこか構文を変えれば動作時間を短縮することはできますでしょうか?
よろしくお願いいたします。

Public Sub hhihyoji()
Dim rw As Integer
Application.ScreenUpdating = False
For rw = 19 To 96
If Range("E" & rw) = "" Then
Rows(rw).EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
Public Sub ohihyoji()
Dim rw As Integer
Application.ScreenUpdating = False
For rw = 100 To 127
If Range("E" & rw) = "" Then
Rows(rw).EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
Public Sub shihyoji()
Dim rw As Integer
Application.ScreenUpdating = False
For rw = 131 To 168
If Range("E" & rw) = "" Then
Rows(rw).EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
Public Sub ozhihyoji()
Dim rw As Integer
Application.ScreenUpdating = False
For rw = 172 To 232
If Range("E" & rw) = "" Then
Rows(rw).EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub

A 回答 (1件)

こんばんは!



Sub Sample1()
Dim c As Range, myRng As Range, myArea As Range
Set myArea = Range("E19:E96,E100:E127,E131:E168,E172:E232")
For Each c In myArea
If c = "" Then
If myRng Is Nothing Then
Set myRng = c
Else
Set myRng = Union(myRng, c)
End If
End If
Next c
If Not myRng Is Nothing Then
myRng.EntireRow.Hidden = True
End If
End Sub

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

す、素晴らしい!!
完璧に非表示ができ、動作も一気に早まりました!!
この構文をきちんと理解できるように勉強してまいります。
ほんとうに助かりました。ありがとうございました!!

お礼日時:2015/07/10 01:33

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