kni*_*der 10 excel vba excel-2007 excel-vba
我试图写一个值到"A1"单元格,但我收到以下错误:
应用程序定义或对象定义的错误'1004'
我在网上尝试过很多解决方案,但都没有.我使用的是excel 2007,文件扩展名是.xlsm.
我的代码如下:
Sub varchanger()
On Error GoTo Whoa
Dim TxtRng As Range
Worksheets("Game").Activate
ActiveSheet.Unprotect
Set TxtRng = ActiveWorkbook.Sheets("Game").Cells(1, 1)
TxtRng.Value = "SubTotal"
'Worksheets("Game").Range("A1") = "Asdf"
LetsContinue:
Exit Sub
Whoa:
MsgBox Err.number
Resume LetsContinue
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑:如果我点击警告图标后出现错误,然后选择显示计算步骤,它的工作正常
Jon*_*ell 15
我想你可能会因为纸张保护而被绊倒.我稍微简化了您的代码,并明确设置了对工作簿和工作表对象的引用.在您的示例中,您在设置TxtRng对象时明确引用工作簿和工作表,但在取消保护工作表时则不能.
试试这个:
Sub varchanger()
Dim wb As Workbook
Dim ws As Worksheet
Dim TxtRng As Range
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet1")
'or ws.Unprotect Password:="yourpass"
ws.Unprotect
Set TxtRng = ws.Range("A1")
TxtRng.Value = "SubTotal"
'http://stackoverflow.com/questions/8253776/worksheet-protection-set-using-ws-protect-but-doesnt-unprotect-using-the-menu
' or ws.Protect Password:="yourpass"
ws.Protect
End Sub
Run Code Online (Sandbox Code Playgroud)
如果我运行带ws.Unprotect
注释掉的sub ,我会得到一个运行时错误1004.(假设我已经保护了工作表并锁定了范围.)取消注释该行允许代码运行正常.
笔记:
Cells(1, 1)
符号可以造成巨大的悲痛量.小心使用它.Range("A1")
人类更容易解析并且更容易防止额头拍打错误. 归档时间: |
|
查看次数: |
249091 次 |
最近记录: |