Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.06.2008, 23:57   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Как это понять If Not Intersect

Как это выразить по русски?

If Not Intersect(Target, Sh.Range("B3:K1489")) Is Nothing Then Macro_Change Sh
valerij вне форума
Старый 19.06.2008, 00:08   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Если дословно, где-то так:
If Not Intersect - если не пересекается (не встречается)
(Target, Sh.Range("B3:K1489")) изменяемая ячейка в диапазоне
Is Nothing Then Macro_Change Sh - делать нечего, запускаем макрос
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 19.06.2008, 00:14   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Если дословно, где-то так:
If Not Intersect - если не пересекается (не встречается)
(Target, Sh.Range("B3:K1489")) изменяемая ячейка в диапазоне
Is Nothing Then Macro_Change Sh - делать нечего, запускаем макрос
Да перевод, через переводчика, я знаю, только здесь он не катит.
Если не пересекается, кто, с чем, как, не пересекается для чего?
Меняю диапазон В3:В4 по барабану!(нет, не по барабану)
Может так мона сказать:
Если производится действия в диапазоне "......", то применить макрос с именм "....."

Последний раз редактировалось valerij; 19.06.2008 в 00:30.
valerij вне форума
Старый 19.06.2008, 00:30   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

здесь Target - ячейка, в которой произошло изменение
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 19.06.2008, 02:02   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
If Not Intersect(Target, Sh.Range("B3:K1489")) Is Nothing Then Macro_Change Sh
По приведенному фрагменту трудно сказать кто здесь изменяется, а кто нет, в свободном переводе здесь написано если у Target и Sh.Range("B3:K1489") нет общих ячеек необходимо выполнить макрос Macro_Change, параметром которому передается Sh.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 19.06.2008, 06:56   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Как раз наоборот.
Дословно: "If Intersect(rang1, rang2) Is Nothing Then..." - это означает, что если нет общих ячеек (не пересекаются) у диапазонов rng1 и rng2, то выполнить то, что после Then. А в приведенном примере стоит "If Not Intersect...". Т.е. если пересечение диапазонов "НЕ НИЧЕГО" (есть общие ячейки), то выполнить Then...
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 19.06.2008, 12:24   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

SAS!!
Ни чего не понял.
Так в оригинале:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Select Case Sh.Index
Case 1 To 13
If Not Intersect(Target, Sh.Range("B3:K1489")) Is Nothing Then 'Macro_Change Sh

Это варажение "If Not Intersect...." очень часто встречаю, а смысла не пойму, почему, красным, и в первой строке объявляется?
Раньше, когда не применялся "'Macro_Change Sh", все равно это выражение было, но без синего.

Как это все, звучит в алгоритме?
valerij вне форума
Старый 19.06.2008, 12:39   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

с SAS888 трудно спорить. Особенно если я не прав. Пытался завести всех в заблуждение. У меня одно оправдание - это без злого умысла. Невнимательность...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 19.06.2008, 13:17   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

valerij. Смысл выражений If Intersect(rang1, rang2) Is Nothing Then... и If Not Intersect(rang1, rang2) Is Nothing Then... достаточно доходчиво объяснен в посте №6. Трудности понимания у Вас, похоже, в конструкции If...Then...
Так вот: возможно два варианта (не считая варианты с ElseIf и Else).
1) Если при выполнении условия требуется выполнить всего один оператор (действие), то все записываем в одну строку. Например:
If A >B Then Exit Sub ' (End If не требуется)
2) Если при выполнении условия требуется выполнить несколько операторов (действий), то конструкция такова:
If A > B Then
'Первое действие
...
...
'Последнее действие
End If
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 19.06.2008, 13:41   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Трудности понимания у Вас, похоже, в конструкции If...Then...
SAS
Нет, эту конструкцию, я понимаю, беда в том, что, та, конструкция, отличается от If...Then, какие то пересечение, к чему?
Я меняю тот диапазон на "Е3:Е1489" и все работает, меняю на "B3:В4", то же все работает, кроме 'Macro_Change Sh, но если я в ручную поставлю в "Е3" значение, все работает.
Какой смысл в такой замысловатой записи, почему не If...Then
Почему, зачем этот Target в первой строке(ByVal Target)?
valerij вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять в чем проблема (код) diznt Помощь студентам 2 03.08.2008 10:20
Помогите понять как это реализовать! krasovskiy Фриланс 6 15.05.2008 14:13
Не могу понять задание amandra Помощь студентам 11 16.10.2007 10:24
Помогите понять код MaGiCeYe Помощь студентам 1 02.04.2007 19:57
не могу понять... Dutchman Паскаль, Turbo Pascal, PascalABC.NET 4 14.12.2006 07:14