powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите с запуском кода при изменении ячейки
7 сообщений из 7, страница 1 из 1
Помогите с запуском кода при изменении ячейки
    #33893668
Eslavnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ячейка, нужно, чтобы при ее изменении запускался код. Написал в VBA это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r1 As Range
Dim r2 As Range
Dim r3 As Range
Set r1 = Range("i8")
Set r2 = Range("j8")
Set r3 = Range("c22")

On Error Resume Next

If Target = Range("I1") Then
r1 = ""
r2.GoalSeek Goal:=- 1  * r3, ChangingCell:=r1
r1 = r1 *  10000 
End If


End Sub

Все хорошо, все работает, но вылезла проблема. Если целевая ячека берет значение из другого файла (в моем случае это =[Sovereign.xls]CFG!$B$1), то она обновляеется при изменении второй таблицы, но код не запускается. А вот если выделить ячейку, перейти в формулу и нажать Enter, то ее значение, естественно не изменится, но код сработает. Т.е. эксель не видит, что ячейка меняет значение, если она берет его из другого файла.
Как же мне все таки заставить его это видеть?)
...
Рейтинг: 0 / 0
Помогите с запуском кода при изменении ячейки
    #33893770
arseny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй вместо события Worksheet_Change написать свой код в Worksheet_Calculate.
Я попробовал, вроде решает твою проблему.
...
Рейтинг: 0 / 0
Помогите с запуском кода при изменении ячейки
    #33893792
arseny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub Worksheet_Calculate()
Dim r1 As Range
Dim r2 As Range
Dim r3 As Range
Set r1 = Range("i8")
Set r2 = Range("j8")
Set r3 = Range("c22")

On Error Resume Next

If ActiveCell = Range("I1") Then
r1 = ""
r2.GoalSeek Goal:=- 1  * r3, ChangingCell:=r1
r1 = r1 *  10000 
End If


End Sub
...
Рейтинг: 0 / 0
Помогите с запуском кода при изменении ячейки
    #33893847
Eslavnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, спасибо! Я не догадался в calculate использовать activecell вместо target
...
Рейтинг: 0 / 0
Помогите с запуском кода при изменении ячейки
    #33893867
Eslavnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поспешил - все равно не работает((
...
Рейтинг: 0 / 0
Помогите с запуском кода при изменении ячейки
    #33894492
arseny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё равно не срабатывает, когда делаешь изменения в файле Sovereign.xls?
...
Рейтинг: 0 / 0
Помогите с запуском кода при изменении ячейки
    #33894545
arseny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтернативное решение, это делать рабочую книгу активной, так как ActiveCell возвращает ячейку из книги Sovereign (если Sovereign в данный момент активна).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Worksheet_Calculate()
    Dim r1 As Range
    Dim r2 As Range
    Dim r3 As Range
    Set r1 = Range("i8")
    Set r2 = Range("j8")
    Set r3 = Range("c22")
    
    On Error Resume Next
    
    ThisWorkbook.Activate
    
    If ActiveCell = Range("I1") Then
        r1 = ""
        r2.GoalSeek Goal:=- 1  * r3, ChangingCell:=r1
        r1 = r1 *  10000 
        
        MsgBox "changed"
    End If
End Sub
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите с запуском кода при изменении ячейки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]