Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用vba实现excel中的图纸保护_Vba_Excel - Fatal编程技术网

用vba实现excel中的图纸保护

用vba实现excel中的图纸保护,vba,excel,Vba,Excel,我想保护工作表,我得到的错误代码如下: Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Range("B6:B112") If cell.Value <> "" Then cell.EntireRow.Hidden = False Else cell.EntireRow.Hidden = True End If Next cell End Sub Private子工作表\u更改(

我想保护工作表,我得到的错误代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)
 For Each cell In Range("B6:B112")
 If cell.Value <> "" Then
 cell.EntireRow.Hidden = False
 Else
 cell.EntireRow.Hidden = True
 End If
 Next cell
End Sub
Private子工作表\u更改(ByVal目标作为范围)
对于范围内的每个单元格(“B6:B112”)
如果单元格的.Value为“”,则
cell.EntireRow.Hidden=False
其他的
cell.EntireRow.Hidden=True
如果结束
下一个细胞
端接头

在这段代码中,我得到一个错误,无法确定range对象的隐藏属性。发生此运行时错误是因为我希望解锁特定区域,而不是我提到的整个工作表。我可以更改代码使之成为可能吗
Sheets("Yoursheetname").Visible = Hidden


您的范围对象工作不正常

因此,只需对范围使用动态索引,如。您必须在这里使用动态索引,如
范围(“B”++++++index+”:“B”++++++index+”)
并且索引是动态增加的

您的
单元格
未设置为整行的范围。 类似于:

范围(“B”&+索引&:“B”&+索引)。EntireRow.Hidden=True

如果对您有帮助,请参阅下面的内容

wks.Range("A" & 7 & ":A" & NumRows + Firstrow).EntireRow.Hidden = False

是的,但在此工作表中,我想为您认识的其他用户取消隐藏一个区域?好的,我看到了您的问题。在这种情况下,问题来自EntireRow的使用。此调用会影响excel文件的整个宽度,这显然不是您想要做的。我建议首先确定excel文件的宽度和高度(使用do while循环)然后指定一个范围来隐藏相应的值。是的!!你知道如何解决这个问题吗?@Diveye因为我需要这个隐藏函数来隐藏特定的RangeDim长度,因为Integer length=1 do while(非空(Sheet(“Change”).Cells(length,1)))length=length+1 Loop length=length-1'删除最后一个元素emptythx@Shivaji Kokate。你能告诉我在哪里插入你的代码吗?我现在有点困惑:我已经更新了答案中的我的示例。看看是否对你有帮助。非常感谢你的帮助。但我老实说,我不确定这是否有帮助这就是我所需要的。在我的代码中,隐藏函数可以很好地隐藏B6:B112范围内的空单元格。问题只是当我想保护整个工作表,然后解锁区域时,例如D6:BC16,由于EntireRow,它属于B6:B112范围,我现在不知道如何修复:(您可以在使用前取消对工作表的保护。因此,您可以在特定范围内应用公式,如取消保护。使用后,如果需要,您可以再次保护整个工作表。我认为这是最好的参考。我是否应该使用函数UnlockCells()的代码)从你发布的链接?@Shivaji Kokat可能是@DarrenBartrup Cook的副本,是的,但不是问题,只是代码:D
wks.Range("A" & 7 & ":A" & NumRows + Firstrow).EntireRow.Hidden = False