【问题标题】:Runtime error "424: Object Required"运行时错误“424:需要对象”
【发布时间】:2015-06-27 03:11:43
【问题描述】:

我在使用此代码时遇到了困难。我正在尝试使基于单元格D25 的值F25 的值会发生变化。我在 VBA 中编写了代码(不知道这是否真的是最好的方法)它给了我一个424 runtime error: Object Required。有人可以指出我正确的方向吗?

Sub Storage_vesel_Controle()

   Sheets("NSR Form").Select

   If Range("D25") = "1" Then Range("F25").Select.Value = "0"

   If Range("D25") = "2" Then Range("F25").Select.Value = ".95"

   If Range("D25") = "3" Then Range("F25").Select.Paste = ".98"

End Sub

另外,我认为我需要添加什么才能使代码“始终运行”......在循环中?

【问题讨论】:

  • 更改Range("F25").Select.Value = "0" tp Range("F25").Value = "0"
  • ...而是删除=之后的引号。

标签: vba excel runtime-error


【解决方案1】:

关于我上面的评论,我不打算发布答案,但我认为我会引起您注意的事情很少,而且 cmets 不会容纳这么多的文本。

我建议不要使用.Select 来选择工作表,而是直接使用工作表(参见下面的代码)您可能还想看到这个link

Sub Storage_vesel_Controle()
    With Sheets("NSR Form")
        Select Case .Range("D25").Value
           Case 1: .Range("F25").Value = 0
           Case 2: .Range("F25").Value = 0.95
           Case 3: .Range("F25").Value = 0.98
        End Select
    End With
End Sub

编辑:

关于您的编辑。您可以使用Worksheet_Change 事件来确保 F25 的值自动更新,或者如果您需要非 VBA 解决方案,则只需使用 F25 中的公式即可

如果您对Worksheet_Change 感兴趣,请查看this。否则F25 中这样的简单公式就可以满足您的需求:)

=IF(D25=1,0,IF(D25=2,0.95,IF(D25=3, 0.98,"")))

【讨论】:

  • Worksheet_Change?那是你写的一组单独的代码吗?
  • @DavidVanderVieren:刷新页面 :) 你会看到最新的编辑。
【解决方案2】:

稍微清理一下。使用 Select Case 语句将比使用多个 If/Then 语句更容易使用。

Sub Storage_vesel_Controle()
    With Sheets("NSR Form")
        .Activate  '<this line is not actually necessary unless you want to be on the sheet.
        Select Case .Range("D25").Value
            Case 1
                .Range("F25").Value = 0
            Case 2
                .Range("F25").Value = 0.95
            Case 3
                .Range("F25").Paste = 0.98
            Case Else
                'do nothing, or, modify as needed
        End Select
    End With
End Sub

【讨论】:

  • + 1 on Select Case :) 我迟到了几秒钟
猜你喜欢
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多