2017-08-08 163 views
0

當我試圖執行此代碼時,它只執行Exit Sub之後的部分,只有在執行foreach循環時纔會執行此操作。我認爲這是由Exit Sub造成的。我的問題是,如果工作表未受保護,我想在工作表受到保護時執行不同的代碼(for each cell in Range("B6:B112..))和另一個(從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

相關問題