【问题标题】:"Object required" error VBA“需要对象”错误 VBA
【发布时间】:2013-06-20 01:21:23
【问题描述】:

我有一个名为“调查”的工作表。我正在尝试将复选框附加到 A 列中答案旁边的所有单元格,并且由于某种原因,我收到“需要对象”错误。开头附近的 4 行以“Set rng =”开头,被突出显示。

我对 VBA 很陌生,所以我不确定这是否只是一个我没有看到的简单语法问题。我已经尝试搜索正确的格式,但无济于事。任何人都可以帮忙吗?这是我得到的代码:

Sub AddCheckBox()

Dim rng As Range
Dim rcell As Range

Set rng = Survey.Range("A7:A10,A13:A17,A21:A25,A28:A33" _
& "A36:A43, A48,A51:A56,A60:A66,A69:A73,A76:A80" _
& "A83:A87, A90:A94, A97:A102, A105:A113, A116:A122, A125:A131" _
& "A134:A141,A145:A149, A152:A158, A161:A165")



DelCheckBox 

For Each rcell In rng
  With ActiveSheet.CheckBoxes.Add(rcell.Left, _
     rcell.Top, rcell.Width, rcell.Height)
     .LinkedCell = rcell.Offset(, 0).Address(External:=True)
     .Interior.ColorIndex = 14   'or  xlNone or xlAutomatic
     .Caption = ""
     .Border.Weight = xlThin
  End With
Next

With Range("A7:A10,A13:A17,A21:A25,A28:A33" _
& "A36:A43, A48,A51:A56,A60:A66,A69:A73,A76:A80" _
& "A83:A87, A90:A94, A97:A102, A105:A113, A116:A122, A125:A131" _
& "A134:A141,A145:A149, A152:A158, A161:A165")
.Rows.RowHeight = 15
End With
End Sub


Sub DelCheckBox()
For Each cell In Range("A1:A166")
    Worksheets("Survey").CheckBoxes.Delete
Next
End Sub

【问题讨论】:

    标签: excel excel-2010 vba


    【解决方案1】:

    您在行尾缺少逗号。试试这个:

    Set rng = Survey.Range("A7:A10,A13:A17,A21:A25,A28:A33," _
    & "A36:A43, A48,A51:A56,A60:A66,A69:A73,A76:A80," _
    & "A83:A87, A90:A94, A97:A102, A105:A113, A116:A122, A125:A131," _
    & "A134:A141,A145:A149, A152:A158, A161:A165")
    

    注意,您还必须在有 With Range("....") 块的地方进行相同的更改。此外,上面的代码并不能反映您正在尝试做的其他事情的有效性......只是一个错误。

    编辑以解决未来的问题...

    尝试所有这些代码,看看它是否符合您的要求:

     Sub test()
    
    Dim rng As Range
    Dim rcell As Range
    
    Set rng = Sheets("Survey").Range("A7:A10,A13:A17,A21:A25,A28:A33," _
    & "A36:A43, A48,A51:A56,A60:A66,A69:A73,A76:A80," _
    & "A83:A87, A90:A94, A97:A102, A105:A113, A116:A122, A125:A131," _
    & "A134:A141,A145:A149, A152:A158, A161:A165")
    
    DelCheckBox
    
    For Each rcell In rng
      With Sheets("Survey").CheckBoxes.Add(rcell.Left, _
         rcell.Top, rcell.Width, rcell.Height)
         .LinkedCell = rcell.Offset(, 0).Address(External:=True)
         .Interior.ColorIndex = 14   'or  xlNone or xlAutomatic
         .Caption = ""
         .Border.Weight = xlThin
      End With
    Next
    
    rng.Rows.RowHeight = 15
    End Sub
    Sub DelCheckBox()
    
    Sheets("Survey").DrawingObjects.Delete
    
    End Sub
    

    【讨论】:

    • 为什么设置 rng 然后不在with 语句中使用它?很容易成为一行:survey.rng.rows.rowheight = 15
    • @scott 因为我只是快速纠正了代码中的其他问题。并没有真正重写整个事情。现在已经更正了...
    • 在将代码复制/粘贴到新模块后,我仍然收到运行时错误 '424 Object required。
    • 那你做错了 :) 工作表是名为“Survey”(就像实际的选项卡名称一样)还是你进入 IDE 并将工作表的代号更改为 Survey?
    • 选项卡名称为“调查”。编辑:澄清
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多