Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как сделать старт макроса при изменении любой из трех ячеек? - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как сделать старт макроса при изменении любой из трех ячеек? (Макросы/Sub)
Как сделать старт макроса при изменении любой из трех ячеек?
ivanov1974 Дата: Пятница, 26.02.2016, 14:39 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 1 ±
Замечаний: 0% ±

Здравствуйте знатоки EXCEL. В наличии есть макрос. При выборе из выпадающего списка в ячейке С3 в ячейки С4 и С5 вставляются соответствующие данные. То есть, сначала вводим данные в С1 и С2, а затем выбираем из выпадающего списка в С3 и только потом вставляются соответствующие значения. А как сделать, чтобы код срабатывал при изменении любой ячейки: С1, С2, С3?
К сообщению приложен файл: 6250900.xls(50Kb)
 
Ответить
СообщениеЗдравствуйте знатоки EXCEL. В наличии есть макрос. При выборе из выпадающего списка в ячейке С3 в ячейки С4 и С5 вставляются соответствующие данные. То есть, сначала вводим данные в С1 и С2, а затем выбираем из выпадающего списка в С3 и только потом вставляются соответствующие значения. А как сделать, чтобы код срабатывал при изменении любой ячейки: С1, С2, С3?

Автор - ivanov1974
Дата добавления - 26.02.2016 в 14:39
SLAVICK Дата: Пятница, 26.02.2016, 14:45 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2007
Репутация: 674 ±
Замечаний: 0% ±

2007,2010,2013,2016
Пробуйте так:
[vba]
Код
If Intersect(Range("C1,C2,C3"), Target) Is Nothing Then Exit Sub
[/vba]
К сообщению приложен файл: 1722372.xls(51Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеПробуйте так:
[vba]
Код
If Intersect(Range("C1,C2,C3"), Target) Is Nothing Then Exit Sub
[/vba]

Автор - SLAVICK
Дата добавления - 26.02.2016 в 14:45
KuklP Дата: Пятница, 26.02.2016, 14:46 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2332
Репутация: 477 ±
Замечаний: 0% ±

2003-2010
переделать вторую строку:
[vba]
Код
If Intersect(Target, [c1:C3]) Is Nothing Then Exit Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Пятница, 26.02.2016, 14:48
 
Ответить
Сообщениепеределать вторую строку:
[vba]
Код
If Intersect(Target, [c1:C3]) Is Nothing Then Exit Sub
[/vba]

Автор - KuklP
Дата добавления - 26.02.2016 в 14:46
Wasilich Дата: Пятница, 26.02.2016, 14:46 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1195
Репутация: 316 ±
Замечаний: 0% ±

2003
Или вместо
[vba]
Код
If Target.Address(0, 0) <> "C3" Then Exit Sub
[/vba]
записать
[vba]
Код
If Not Intersect(Target, Range("C1:C3")) Is Nothing Then
   КОД
End If
[/vba]

PS KuklP, на сколько секунд опередил?

[offtop]Да уж, шустрые мы на легкие вопросы, но СЛАВИК шустрей :D [/offtop]


Сообщение отредактировал Wasilic - Пятница, 26.02.2016, 14:55
 
Ответить
СообщениеИли вместо
[vba]
Код
If Target.Address(0, 0) <> "C3" Then Exit Sub
[/vba]
записать
[vba]
Код
If Not Intersect(Target, Range("C1:C3")) Is Nothing Then
   КОД
End If
[/vba]

PS KuklP, на сколько секунд опередил?

[offtop]Да уж, шустрые мы на легкие вопросы, но СЛАВИК шустрей :D [/offtop]

Автор - Wasilich
Дата добавления - 26.02.2016 в 14:46
_Boroda_ Дата: Пятница, 26.02.2016, 14:48 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11545
Репутация: 4754 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы про это?
[vba]
Код
If Intersect(Range("C1:C3"), Target) Is Nothing Then Exit Sub
[/vba]
[offtop]Добавлено
Ох ты ж мама моя! Сколько нас близнецов-то!


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995


Сообщение отредактировал _Boroda_ - Пятница, 26.02.2016, 14:50
 
Ответить
СообщениеВы про это?
[vba]
Код
If Intersect(Range("C1:C3"), Target) Is Nothing Then Exit Sub
[/vba]
[offtop]Добавлено
Ох ты ж мама моя! Сколько нас близнецов-то!

Автор - _Boroda_
Дата добавления - 26.02.2016 в 14:48
ivanov1974 Дата: Пятница, 26.02.2016, 15:11 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 1 ±
Замечаний: 0% ±

Я вообще далекий от написания макросов, перепробовал все варианты и ничего не работает. Может я непонятно изложил, что должно получиться? Например скачал файл, который скорректировал SLAVICK. Меняю данные в ячейке С1 или С2 и данные макросом не вставляются.
 
Ответить
СообщениеЯ вообще далекий от написания макросов, перепробовал все варианты и ничего не работает. Может я непонятно изложил, что должно получиться? Например скачал файл, который скорректировал SLAVICK. Меняю данные в ячейке С1 или С2 и данные макросом не вставляются.

Автор - ivanov1974
Дата добавления - 26.02.2016 в 15:11
_Boroda_ Дата: Пятница, 26.02.2016, 15:20 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11545
Репутация: 4754 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Тьфу, конечно. Вот так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("C1:C3"), Target) Is Nothing Then Exit Sub
Select Case Range("C3")
    Case "Ивановский"
        Range("C4") = "1200"
        Range("C5") = WorksheetFunction.Round(1200 / Range("C2").Value * Range("C1").Value, 0) '"1200"

    Case "Петровский"
        Range("C4") = "1000"
        Range("C5") = WorksheetFunction.Round(1100 / Range("C2").Value * Range("C1").Value, 0) '"1100"

End Select
Application.EnableEvents = True
End Sub
[/vba]

или
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n1
If Intersect(Range("C1:C3"), Target) Is Nothing Then Exit Sub
Select Case Range("C3")
    Case "Ивановский"
        n1 = "1200"
    Case "Петровский"
        n1 = "1000"
End Select
Application.EnableEvents = False
Range("C4") = n1
Range("C5") = WorksheetFunction.Round(n1 / Range("C2").Value * Range("C1").Value, 0)
Application.EnableEvents = True
End Sub
[/vba]
К сообщению приложен файл: 6250900-1.xls(52Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТьфу, конечно. Вот так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("C1:C3"), Target) Is Nothing Then Exit Sub
Select Case Range("C3")
    Case "Ивановский"
        Range("C4") = "1200"
        Range("C5") = WorksheetFunction.Round(1200 / Range("C2").Value * Range("C1").Value, 0) '"1200"

    Case "Петровский"
        Range("C4") = "1000"
        Range("C5") = WorksheetFunction.Round(1100 / Range("C2").Value * Range("C1").Value, 0) '"1100"

End Select
Application.EnableEvents = True
End Sub
[/vba]

или
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n1
If Intersect(Range("C1:C3"), Target) Is Nothing Then Exit Sub
Select Case Range("C3")
    Case "Ивановский"
        n1 = "1200"
    Case "Петровский"
        n1 = "1000"
End Select
Application.EnableEvents = False
Range("C4") = n1
Range("C5") = WorksheetFunction.Round(n1 / Range("C2").Value * Range("C1").Value, 0)
Application.EnableEvents = True
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 26.02.2016 в 15:20
ivanov1974 Дата: Пятница, 26.02.2016, 15:31 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 1 ±
Замечаний: 0% ±

Boroda, все класно работает. Всем большое спасибо. Вопрос закрыт
 
Ответить
СообщениеBoroda, все класно работает. Всем большое спасибо. Вопрос закрыт

Автор - ivanov1974
Дата добавления - 26.02.2016 в 15:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как сделать старт макроса при изменении любой из трех ячеек? (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!