Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите с запуском кода при изменении ячейки / 7 сообщений из 7, страница 1 из 1
02.08.2006, 10:09:06
    #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
02.08.2006, 10:39:50
    #33893770
arseny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запуском кода при изменении ячейки
Попробуй вместо события Worksheet_Change написать свой код в Worksheet_Calculate.
Я попробовал, вроде решает твою проблему.
...
Рейтинг: 0 / 0
02.08.2006, 10:46:53
    #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
02.08.2006, 11:04:46
    #33893847
Eslavnov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запуском кода при изменении ячейки
Вот, спасибо! Я не догадался в calculate использовать activecell вместо target
...
Рейтинг: 0 / 0
02.08.2006, 11:08:50
    #33893867
Eslavnov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запуском кода при изменении ячейки
Поспешил - все равно не работает((
...
Рейтинг: 0 / 0
02.08.2006, 13:25:54
    #33894492
arseny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запуском кода при изменении ячейки
Всё равно не срабатывает, когда делаешь изменения в файле Sovereign.xls?
...
Рейтинг: 0 / 0
02.08.2006, 13:41:33
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите с запуском кода при изменении ячейки / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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