2017-08-08 23 views
0

このコードを実行しようとすると、Exit Subの後にのみパーツが実行され、シートが保護されていないとforeachループのみが実行されます。私はそれがExit Subによって引き起こされたと思います。私の問題は、シートが保護されているときに別のコード(for each cell in Range("B6:B112..)を実行し、シートが保護されていないときにもう1つ(Dim rng as Rangeで始まる)を実行したいということです。私はIf..Then..Elseを試しましたが、それは動作しません。保護されていないシートと保護されたシートにコードを実装するVBA Excel

Private Sub Worksheet_Change(ByVal Target As Range) 
If Worksheets("test").ProtectContents Then Exit Sub 

For Each cell In Range("B6:B112") 
If cell.Value <> "" Then 
cell.EntireRow.Hidden = False 
Else 
cell.EntireRow.Hidden = True 
End If 
Next cell 

Dim rng As Range 
Dim eingabeNr As Double, letzteZeile As Long, eingabeDatum As String, eingabeNrString As String 
Set rng = Range("D:BC") 

THX。

+0

「If..Then..Else」が機能しないのはなぜですか? – YowE3K

+0

私は本当に 'If..then..else'をどこに置いたのか分かりませんが、動作しません。@ YowE3K – flowers1234

答えて

0
Private Sub Worksheet_Change(ByVal Target As Range) 
If Worksheets("test").ProtectContents = True Then 'added = true for readability. 

    For Each cell In Range("B6:B112") 
     If cell.Value <> "" Then 
      cell.EntireRow.Hidden = False 
     Else 
      cell.EntireRow.Hidden = True 
     End If 
    Next cell 
Else 
    Dim rng As Range 
    Dim eingabeNr As Double, letzteZeile As Long, eingabeDatum As String,_ 
    eingabeNrString As String 
    Set rng = Range("D:BC") 

    Do some stuff here 

End if 
+0

あなたのコードのように実装します。 'cell.EntireRow.Hidden = False' @Luuklag – flowers1234

+0

に間違いを見つけましたか?どのようなエラー... – Luuklag

+0

行が隠されていない可能性がありますので、再表示することはできません。機能を持たないので、コードから行を削除するだけです。 – Luuklag

関連する問題