2012-01-02 1 views
1

Я пытаюсь получить следующий код на рабочем листе. На данный момент ничего не делает.Проблемы с методами изменения рабочего листа; не удалось изменить

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address(False, False) = "j4" Then 
    Application.EnableEvents = False 
    If Target.Value = 0 Then 
     Range("j5").Value = 1 
    Else 
     Range("j5").Value = 2 
    End If 
    Application.EnableEvents = True 
End If 
End Sub 

код, размещенных на листе и безопасности макросов установлено значение «Включить все макросы».

Я использую 64-разрядную версию Excel 2010

Спасибо за любую помощь вы можете предложить. James

+0

Вы пытаетесь установить значение J5 при изменении J4? –

+0

да, это было бы прекрасно! – James

+0

Почему вы хотите использовать VBA для этого? Примерно в 20 раз проще написать формулу в ячейке J5. –

ответ

2

Вопрос является вашим первым заявлением If. Следующий код должен работать на вас:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("J4")) Is Nothing Then 
     Application.EnableEvents = False 
     If (Target = 0) Then 
      Range("J5") = 1 
     Else 
      Range("J5") = 2 
     End If 
     Application.EnableEvents = True 
    End If 
End Sub 
+0

Спасибо, трудились. Как вы порекомендовали бы продлить это для выбора? – James

+0

ah, это не работает, если контрольная ячейка (то есть J4) является выпадающим списком выбора. Какие-либо предложения? – James

+1

@James. Простейшим решением, отличным от VBA, было бы иметь формулу ячейки J5 как '= IF (J4 = 0, 1, 2)'. У меня есть только Excel 2003, поэтому не уверен, что такое «select pull-down»? Он работает на моем рабочем столе, если вы используете 'Data> Validation' и заполняете раскрывающееся меню, выбрав« List »и соответственно устанавливая« Source ». –

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