我在使用此代码时遇到了困难。我试图让它成为基于单元格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
此外,我需要添加什么才能使代码“始终在运行”...我认为在循环中?
答案 0 :(得分:2)
除了我上面的评论之外,我还没打算发布一个答案,但看到了一些我认为会引起你注意的事情,评论不会包含太多文字。
我建议不要使用.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,"")))
答案 1 :(得分:1)
清理一下。使用Select Case
语句比mutliple 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