2013-03-27 226 views
1

我對這段代碼有困難。我正在嘗試使其基於單元格D25的值F25將會更改。我在VBA中創建了代碼(不知道這是否是最好的方法),它給了我一個424 runtime error: Object Required。有人能指點我正確的方向嗎?運行時錯誤「424: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 

此外,我需要添加什麼來使代碼「始終運行」...在循環中我想呢?

+2

變化'範圍( 「F25」)。Select.Value = 「0」''TP範圍( 「F25」)。值=「0 「' – 2013-03-27 18:16:54

+0

...,而是在'='後面刪除引號。 – 2013-03-27 18:18:11

回答

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,""))) 
+0

+1,因爲偉大的思想家都認爲:) – 2013-03-27 18:25:04

+0

Worksheet_Change?這是一套獨特的鱈魚眼嗎? – 2013-03-27 18:33:46

+0

@DavidVanderVieren:刷新頁面:)您將看到最新的編輯。 – 2013-03-27 18:34:26

1

清理一下。使用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 
+0

+1選擇案例:)我遲了幾秒 – 2013-03-27 18:24:41