Добрый день! Если при определенном значении переменной в Select Case не нужно ничего делать, что писать в опции? Exit Select не работает, в хелпе ничего пока не нашел, пока пишу оператор типа x=x, который ничего не делает..
Select Case: бездействие при определенном значении, Exit Select
07.01.2017 19:35:15
|
|
|
|
07.01.2017 19:36:09
![]() Т.е. Case только для нужных. Пример покажете, по которому будет понятно, в чем проблема? |
|||
|
|
07.01.2017 20:08:17
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
|||
|
|
07.01.2017 20:10:31
Изменено: |
|||
|
|
07.01.2017 20:12:22
Elce - неправильно мяукнул
|
|
|
|
07.01.2017 20:17:42
При всех, кроме 3, что-то будет, что-то будет... |
|||
|
|
07.01.2017 20:20:21
![]()
There is no knowledge that is not power
|
|||
|
|
07.01.2017 20:36:32
И чё к киске пристали?
И так лапка болит! ![]() |
|
|
|
07.01.2017 21:56:03
Изменено: |
|||||
|
|
07.01.2017 22:43:49
Казанский, да, это работает, спасибо. Хотя подобная лаконичность выгладит немного странно..
![]() А необходимость выделения этой опции связана с тем, что значения в ней верные, просто с ними ничего делать не надо. В else же ошибочные значения, которых быть не должно, и реакция на эту ошибку.
Изменено: |
|
|
|
07.01.2017 22:48:38
|
|||
|
|
08.01.2017 09:52:54
Изменено: |
|||||
|
|
08.01.2017 10:54:06
Вот и вопрос: зачем перечислять то, без чего и так будет выход? Я понимаю, если бы нужен был выход из всей процедуры(Exit Sub) - тогда да, тогда есть смысл. Но выход из Select...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
|||
|
|
08.01.2017 11:09:53
Да, собственно, вопрос решен. Остальное - просто рассуждения об удобстве или неудобстве синтаксиса vba.
|
|
|
|
08.01.2017 12:01:34
![]()
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
|||
|
|
08.01.2017 12:12:54
![]() А Вы бы сформулировали новый вопрос по ПРОБЛЕМЕ, а не по способу, которым ее пытаетесь решить. Может там Select со своим Case'ом вообще не нужен. И файл-пример приложите. Но все это в новой теме
Согласие есть продукт при полном непротивлении сторон
|
|||
|
|
08.01.2017 12:34:50
|
|||
|
|
08.01.2017 13:22:54
![]() А вот и про кругозор - C# в студию!
Есть таки одно отличие, касающееся темы. Это break. Он прямо указывает на выход из switch. И поэтому, если между case и ним пусто, сразу ясно, что это выход без действия. А в vba что? Фиг с маслом после двоеточия. Типа, и так все должны знать, что тут выход , а указатель повесить - жирно будет. ![]() ![]() |
|||||
|
|
08.01.2017 14:03:02
|
|||
|
|
08.01.2017 14:13:52
Почему break - хорошо, показанный способ - плохо? break в Си выполняет точно такую же функцию. Я не про способ одевания )
Есть Exit Sub, есть Exit For. Выход из Select не придумали, также как нет и выхода из If/End If - не нужен такой оператор. По мне, так указатель выхода писать, если и без него прекрасно работает - тоже не ахти желание. В том смысле, что если знаешь, то отсутствие указателя совершенно не мешает. Ведь если не знать об операторе break, то тоже можно проблему надумать. |
|
|
|
08.01.2017 14:54:41
А зачем в C# пишут эти лишние 6 символов? Да ещё перевод строки...
![]() |
|
|
|
08.01.2017 15:44:30
case1: case2: call ДелайДва() И что должен решить пользователь, не изучивший рутинную матчасть vba, но знающий C#? Правильно, по аналогии - при аргументе=1 будет ДелайДва()! А будет-то - НаВыходСВещами() ![]() |
|||
|
|
08.01.2017 15:53:57
А что должен делать пользователь, не изучивший рутинную матчасть C#, но знающий vba? Посмотрите сообщение №25. Hugo со знаниями VBA пытается понять (как и Вы здесь), зачем в С# лишнее написано. Ну, серьезно, Вы как-то однобоко смотрите.
Три совершенно одинаковые (по логике) записи. Откуда пользователю знать, что в первой записи значит i? Ведь явно не написано. И нет End If... Беда! Откуда во второй записи узнать, что делать при невыполнении условия? Откуда в третьем коде знать, что делать при невыпонении условия? Ах, да, забыл, заменитель break'а надо придумать ) Да в любом языке есть свои извороты синтаксиса. Извините, Вы проблему "высосали из пальца". |
|||||
|
|
08.01.2017 16:06:33
Да я вообще проблемы не вижу.. Получил еще вчера ответ на свой вопрос. Поворчал на синтаксис по случаю праздника, вот и все.
![]() |
|
|
|
08.01.2017 16:14:18
А вот так на VBA будет выглядеть приведенное Вами на C# выражение:
Поэтому Ваше высказывание
![]()
Изменено:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
|||||||
|
|
08.01.2017 16:18:06
Почему VBA должен быть интуитивно понятен тому, кто ранее программировал в C#? Это откуда вообще такое требование к языкам программирования? А почему не наоборот? Ведь C# появился куда позднее VBA. VBA был уже в 1997, а C# появился только в 2000. Так может он должен тогда интуитивно напоминать VBA? Я так не считаю. Да и вообще высказывание(которое я процитировал) лишено всякой логики. Если бы все языки были одинаковыми - нафига их так много? У каждого свои плюсы и минусы и свой синтаксис, который программирующий на этом языке обязан знать и учить сам. Знание другого ЯП должно лишь помочь. Но не более. Это все равно что требовать от Вас, если Вы знаете английский язык, знать еще и арабский. Вот Вы приезжаете в чужую страну отдыхать, по своей воле. Кто кому должен: Вы изучить обычаи и законы страны или народ страны под Вас подстроиться? ![]() Кстати, еще про некоторых различия синтаксиса в C# и VBA: в C# не надо каждый раз писать End If, End Select, end еще что-то. Там все выражения заключаются в фигурные скобки. С одной стороны - удобно, фиг опечатаешься оператором. С другой - не во всех редакторах есть подсветка блоков, что в некоторых случаях написания этих блоков резко снижает читаемость кода. Опять же - дело вкуса. И опять же - если я писал на C# это не значит, что перейдя вдруг на VBA я должен требовать от него воспринимать фигурные скобки вместо завершающих операторов. Это ведь неправильно. Это особенность языка, его синтаксис. И я должен следовать ему несмотря на то, что в другом языке это как-то иначе делается. P.S. Не хочу ничего доказывать, просто Ваши высказывания слишком категоричны, но неверны в том виде, в котором преподносятся. Как применять ту или иную конструкцию - решать Вам. Я не говорил, что не надо делать именно так. Меня интересовало почему хотите сделать именно так. Если бы Вы сказали, что так Вам нагляднее на первых парах изучения VBA - вопрос был бы исчерпан. Но Вы начали говорить о недостатках синтаксиса и пр. Ну согласитесь - не совсем правильно рассуждать так о синтаксисе языка, когда Вы его еще не знаете. По сравнению с ассемблером это вообще сказка ![]() ![]()
Изменено:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
||||
|
|
|||
Читают тему