Excel:下拉列表,受保护的工作表和隐藏行之间的奇怪交互

时间:2015-07-02 19:08:10

标签: excel vba excel-vba

我在excel中的受保护工作表和我的下拉列表之间进行了奇怪的交互。工作表顶部的下拉列表会根据用户选择的选项更改可见的行。当工作表不受保护时,一切正常,但在保护模式下打开工作表时,一切都变得奇怪。当我在下拉列表中选择一个选项时,它会显示正确的行,但下次我尝试更改下拉列表时,下拉选项会显示在不同的区域,或者是反转的。我将在下面发布截图以更好地解释。

第一张照片;没有选择;受保护的工作表

enter image description here

第二张照片;选择第一个选项,下拉列表上升;工作表受到保护 enter image description here

第三张照片;选择第三个选项;下拉列表会映射到底部,而不是下拉列表单元格。工作表仍然受到保护。enter image description here

第四张图片,选择第三个选项,一切正常;工作表不受保护。 enter image description here

我的代码很简单。我将发布一个例子。

Sub ProtectSheetsNoPassword()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ActiveWorkbook
For Each ws In wb.Worksheets
    ws.Protect DrawingObjects:=True, _
                Contents:=True, _
                Scenarios:=False, _
                AllowFormattingCells:=False, _
                AllowFormattingColumns:=False, _
                AllowFormattingRows:=True, _
                AllowInsertingColumns:=False, _
                AllowInsertingRows:=False, _
                AllowInsertingHyperlinks:=False, _
                AllowDeletingColumns:=False, _
                AllowDeletingRows:=False, _
                AllowSorting:=False, _
                AllowFiltering:=False, _
                AllowUsingPivotTables:=False
    'ws.Unprotect 'Uncomment if you want to unprotect the sheets
Next
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

'This is the code that shows or hides specific rows based on the type selected
If Range("B1") = "1" Then
    ActiveSheet.Rows("1:18").EntireRow.Hidden = False
    ActiveSheet.Rows("19:22").EntireRow.Hidden = True
Else If Range("B1") = "2" Then
.......So on so forth

我不知道这里发生了什么。有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我能解决这个问题。在保护我的工作表时,我需要检查"编辑对象"框来解决问题。如果你认为Dropdown列表是我认为的对象,那么这是有道理的。我不知道有什么逻辑让它表现得如此奇怪。