2015-11-18 3 views
0

У меня есть книга Excel 2013 с несколькими листами. На одном листе у меня есть макрос, который показывает формулу в ячейках E7: E999. Он отлично работает, за исключением двух вещей.Запуск макроса excel после каждого обновления

  1. Я бы хотел, чтобы макрос автоматически запускался каждый раз, когда пользователь вводит новую формулу в указанном диапазоне.
  2. Я хочу, чтобы этот макрос запускался только для одного листа с именем «PP», но прямо сейчас, если я запускаю макрос, он запускается на любом листе.

Вот макрос, который у меня есть. Он делает то, что я хочу, он просто не делает это автоматически и работает на любом листе. Я новичок в VBA в Excel, поэтому, если вы могли бы дать несколько подробностей вашим ответам, которые были бы наиболее полезными.

Sub ShowFormulas() 
Dim DQ As String, mesage As String 
Dim rng As Range, r As Range 

DQ = Chr(34) 
Set rng = Range("E7:E999").Cells.SpecialCells(xlCellTypeFormulas) 

For Each r In rng 
    mesage = DQ & r.Formula & DQ 
    r.NumberFormat = mesage & ";" & mesage & ";" & mesage & ";" 
Next r 

End Sub 
+0

Посмотрите на рабочий лист и рабочий лист. Просветите события. –

ответ

0

поддержки Microsoft имеет это: [https://support.microsoft.com/en-us/kb/213612][1]

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim KeyCells As Range 

' The variable KeyCells contains the cells that will 
' cause an alert when they are changed. 
Set KeyCells = Range("A1:C10") 

If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
     Is Nothing Then 

    ' Display a message when one of the designated cells has been 
    ' changed. 
    ' Place your code here. 
    MsgBox "Cell " & Target.Address & " has changed." 

End If 
End Sub 

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

+0

В вашей функции пересечения вам не нужен 'Range (Target.Address)' just 'Target' будет достаточно. Это диапазон и не нужно вызывать с ключевым словом «Range». –

+0

Правда; Я фактически копировал код MS с его веб-страницы, чтобы привести пример. Мой собственный код сделал то же, что и вы. –

+0

Типичная MS, делая это таким образом, что это сложнее, чем нужно. –

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