当前位置: 首页 > 知识库问答 >
问题:

运行时错误“1004”:对象“_worksheet”的方法“range”失败

锺离霖
2023-03-14

当使用此sub标记复选框时,我正试图写入单元格

Sub CheckBox7_Click()
If ws1.Shapes("Check Box 7").OLEFormat.Object.Value = 1 Then
ws2.Range(comment).Offset(0, 2).Value = "1"
Else
ws2.Range(comment).Offset(0, 2).Value = "0"
End If
End Sub

但是,如果我只是打开工作表并单击复选框,我会得到运行时错误'1004':object'_worksheet'的方法'range'失败错误。

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim comment As String
Dim rown As Integer
Private Sub Workbook_Open()
rown = 3
comment = "F" & rown
Set ws1 = ThisWorkbook.Sheets("Rating test")
Set ws2 = ThisWorkbook.Sheets("Comments test")
End Sub

令我感到奇怪的是,如果我在模块中首次按下一个带有以下代码的按钮,我不会再得到错误,即使它是我放入Workbook_open事件中的代码:

Sub First_Comment()
Set ws1 = ThisWorkbook.Sheets("Rating test")
Set ws2 = ThisWorkbook.Sheets("Comments test")

    rown = 3
    comment = "F" & rown

End Sub

谢谢你的帮助,我是一个VBA新手!

共有1个答案

齐学文
2023-03-14

您需要将全局变量声明为public,否则workbook_open将创建并处理自己的变量,因为这些变量超出了他的范围

Public ws1 As Worksheet
Public ws2 As Worksheet
Public comment As String
Public rown As Integer
 类似资料:
  • 当我运行代码时,出现错误消息“对象'_worksheet'的方法'range'失败”,下面粘贴的第6行代码由调试器突出显示。当将引用更改为1样式表示法时,代码将按预期在目标工作表中生成粘贴的值。

  • 我试图写一个宏,复制表格(颜色,格式等)从工作表的每一天(星期一,星期二,星期三,星期四和星期五)和粘贴到工作表(262个工作表)为同一天。(星期一-星期一等)表名我在表“数据”。

  • 我用这个例子来理解ionic和php与mysql之间的操作,但我发现这个错误在我看来似乎是错误的,我不明白它来自哪里。奇怪的是,当我加载一个便笺时,它会工作,并加载到数据库中。 他离开了存储库,以防他们想要可视化代码https://github.com/javazika/ionic_crud_php_msqyl

  • 不幸的是,对于第一个项目来说,这很困难。 为了清晰起见(希望如此):主要思想是我需要从下拉列表的开头开始,复制列出的第一个字符串,然后将该字符串粘贴到列中。这会改变右边相邻的数值数据。然后,我想选择这个新更改的数值数据,并将其复制粘贴到同一个工作簿中F列第一个空白处的不同工作表中。然后,我想让代码遍历下拉列表,并对下拉列表中的所有51个字符串执行此操作。但是,每次迭代都需要将偏移量粘贴3列,才能将

  • 问题内容: 刷新带有BackGroundQuery设置为False的QueryTable时,我遇到了Excel 2013的问题(出于我们的目的,BackgroundQuery必须设置为false)。当提供不返回任何数据的查询时,将发生1004运行时错误,最常见的原因是没有返回任何数据是在特定时间范围内或在特定资源上没有记录。 我的同事和我自己一直在尝试解决此问题,但尚未找到解决方案,我们进一步发现

  • 我想基于同一工作簿中的数据集(包含在工作表中)创建一个透视表。 当我运行宏时,工作簿是打开的。数据集来自在Access中运行查询,然后将其导出到Excel。我还尝试在运行宏之前保存工作簿。我正在使用Excel2016。 这是我的代码: 资料截图。