2013-03-27 8 views
1

У меня возникли трудности с этим кодом. Я пытаюсь сделать так, чтобы в зависимости от значения ячейки D25 значение F25 изменится. Я сделал код в VBA (не знаю, действительно ли это лучший способ), и он дает мне 424 runtime error: Object Required. Может ли кто-нибудь указать мне в правильном направлении?Ошибка выполнения «424: Обязательный объект»

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

Изменить 'Range ("F25"). Select.Value = "0"' 'тп Range ("F25"). Value =«0 "' –

+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 

EDIT:

Что касается вашего редактировать. Вы можете использовать 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, потому что великие мысли думают одинаково :) –

+0

Worksheet_Change? Это отдельный набор трески, который вы пишете? –

+0

@DavidVanderVieren: Обновить страницу :) Вы увидите последние изменения. –

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 
+0

+ 1 on Select Case :) Я был на несколько секунд опоздал –

Смежные вопросы