2016-02-02 11 views
0

Я использую Excel 2010, и я хочу, чтобы лист Excel автоматически обновлялся (вычислялся) при изменении значения ячейки (Range("B7")) (Range("B7") это раскрывающийся список). Я пытаюсь использовать Интерсекта-целевой метод, как:Автоматическое обновление (вычисление) листа Excel при изменении ячейки

Private Sub Worksheet_Change(ByVal target As Range) 
    If Not Intersect(target, Range("B7")) Is Nothing Then 
    ActiveSheet.Calculate 
    End If 
End Sub 

У меня есть два вопроса по этому поводу:

ли это важно, если я поставлю этот Private Sub под любым модулем? Или я должен написать его в точном листе в меню Microsoft Excel -объекта в VBA?

Второй вопрос: как я могу сделать эту работу? Лист не обновляет (вычислять) автоматически при изменении Range("B7"). Он обновляется только при сохранении файла Excel.

ответ

1

Функция должна быть на листе, к которому принадлежит B7, например. если обновляемый B7 находится в «Sheet1», тогда код для события Worksheet_Change также должен быть в Sheet1. Вы можете щелкнуть правой кнопкой мыши вкладку для листа и выбрать код показа, чтобы попасть в нужное место в VBE.

В Excel должно быть известно, что любая ячейка, использующая B7, должна быть пересчитана при изменении, поэтому ее следует обрабатывать автоматически.

+0

спасибо за советы. Я также понял, что расчет внутри меню Excel настроен на «Ручной расчет». Вот почему лист не обновлялся, даже если я пытался использовать код VBA. – user3714330

1

Ваш код будет работать, если вы поместите его в листов случае не Modlue пожалуйста найти ниже изображение для справки.

enter image description here

Выберите соответствующий лист в окне VB и дважды щелкните на нем, то откроется окно листа событий (код окна), где вам необходимо скопировать вставить коды. Теперь попробуйте изменить ячейку проверки, в которой она должна работать :).

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

  • Нет связанных вопросов^_^