我必须在Excel工作表中解锁特定范围(D6:BC116)。它应该能够让其他人编辑这个特定区域。所以它应该为他们解锁。 起初我手动保护整张纸,没有任何代码。之后我想取消保护特定区域进行编辑。但总有一些问题。我有这两个代码。第一个代码具有隐藏属性,它只隐藏空单元格。其他代码我试图在保护整个工作表后取消保护我要编辑的特定区域。 由于隐藏属性,我不确定问题是否在第一个代码中?我不确定他们是否处于关系中?
package au.com.scraper;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
public class ProxyAuthenticator extends Authenticator
{
public ProxyAuthenticator(String user, String password)
{
this.user = user;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(user, password.toCharArray());
}
private String user;
private String password;
}
当我执行此操作时,我总是得到"索引超出范围"
谢谢!
答案 0 :(得分:2)
我认为你需要在解锁之前取消保护。 像这样:
With Worksheets("Sheet1")
.Unprotect "MyLongAndSecurePassword"
.Range("D6:BC116").Locked = False
.Protect
End with
关于代码的第一部分 - 确保使用未命名为cell
的变量,因为VBEditor使用了cell
。将变量命名为rngCell
,myCell
或除cell
以外的任何其他内容。并声明如下:Dim rngCell as Range
。
最后一点 - 锁定您的工作表并尝试隐藏和取消隐藏行。可能吗?如果没有,您就知道错误的原因。
修改强>
要检查工作表是否受保护,请在 Worksheet_Change 中尝试此操作:
Private Sub Worksheet_Change(ByVal Target As Range)
If Worksheets("Sheet1").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
End Sub