将字符串写入excel中的单元格

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.(假设我已经保护了工作表并锁定了范围.)取消注释该行允许代码运行正常.

笔记:

  1. 写入范围后,我正在重新设置纸张保护.我假设你想要这样做,如果你首先保护表单.如果您在进一步处理后再重新设置保护,则需要删除该行.
  2. 我删除了错误处理程序.Excel错误消息比Err.number提供了更多详细信息.一旦您的代码工作并显示您想要的任何内容,您就可以将其重新放入.显然你也可以使用Err.Description.
  3. Cells(1, 1)符号可以造成巨大的悲痛量.小心使用它.Range("A1")人类更容易解析并且更容易防止额头拍打错误.