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

Vba Excel:下拉列表、受保护工作表和隐藏行之间的奇怪交互,vba,excel,Vba,Excel,excel中受保护的工作表和下拉列表之间有一种奇怪的交互。图纸顶部的下拉列表根据用户选择的选项更改可见的行。当工作表未受保护时,一切正常,但当以保护模式打开工作表时,一切都变得奇怪。当我在下拉列表中选择一个选项时,它会显示正确的行,但下次我尝试更改下拉列表时,下拉选项会显示在不同的区域,或者是反转的。我将在下面发布截图,以便更好地解释 第一张照片;未选择任何选项;工作表保护 第二张图片;选择第一个选项,下拉列表向上;工作表保护 第三张图片;第三种选择;下拉列表映射到底部区域,而底部区域甚至不

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

第一张照片;未选择任何选项;工作表保护

第二张图片;选择第一个选项,下拉列表向上;工作表保护

第三张图片;第三种选择;下拉列表映射到底部区域,而底部区域甚至不是下拉列表单元。工作表仍受保护

第四张图片,选择第三个选项,一切正常;工作表未受保护。

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

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

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

我能解决这个问题。在保护工作表时,我需要选中“编辑对象”框来解决问题。如果你把下拉列表看作对象,我想这是有道理的。不过,我不知道是什么逻辑让它表现得如此奇怪

发布代码会更有用。发布带有虚拟数据的图像也会更有用,这样更容易准确地看到正在发生的事情。显然,出于隐私原因,你不能发布真实的数据,所以编一些有趣的东西吧!老实说,这些数据是无关紧要的。它是基本的;如果选择了DDL-1,则显示行A-B,隐藏行C-Z。如果选择了DDL-2,则显示行C-D,隐藏行A-B,D-Z。依此类推。