运行时错误“424:Object Required”

我对这个代码有困难。 我正在试图做到这一点,根据单元格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 

另外,我需要添加什么来使代码“始终运行”…我想在循环中?

除了上面我的评论之外,我并没有计划发表一个答案,而是看到了一些我认为会引起你注意的事情,并且评论不会​​容纳那么多的文本。

我会build议不要使用。selectselect表,但直接与工作表(见下面的代码)您可能还希望看到这个链接

 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解决scheme,那么只需使用F25的公式

如果你对Worksheet_Change感兴趣,那么看看这个 。 否则像F25这样简单的公式就足够了你的需求:)

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

把它清理一下。 使用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