Vba excel что значит двоеточие

Обновлено: 03.07.2024

считается ли плохой практикой использовать двоеточия для размещения двух операторов в одной строке в Visual Basic?

нет ничего изначально неправильного в использовании двоеточия для объединения операторов. Это действительно зависит от контекста, но пока он не уменьшает читаемость, в этом нет ничего плохого.

это хорошая практика в умеренности, потому что иногда читаемость усиливается путем объединения двух строк:

когда строки короткие и тривиальные

не делайте этого, если:

  • это вредит читабельности.
  • это затрудняет отладку. Структуры управления, такие как If. Then нужно оставаться чистым. Вы будете рады ты держал все просто, когда пришло время установить точку останова.
  • это ставит под угрозу будущее редактирование. Часто вы хотите сохранить разделы портативными. Перемещение или переструктурирование блока кода легко затрудняется попытками минимизировать код.

В общем, я бы не советовал, так как это делает для более загруженного кода.

однако для простых задач в этом нет ничего плохого. Например:

Я думаю, что такая строка достаточно коротка, чтобы не вызвать путаницы.

Я возьму другую сторону. Мне не нравятся плотные строки кода. Легче обезжиривать код, когда строки не объединены.

Объединение операторов также упрощает создание длинных функций, которые по-прежнему помещаются на одном экране.

Это не большой грех, мне просто не нравится.

Мне также не нравится одна строка если заявления.

или циклы ожидания:

но, очевидно, вы действительно можете сделать это грубо на кого-то тоже:

еще одна практическая причина, по которой вы возможно, не стоит использовать этот подход-точки останова. Точки останова могут быть установлены только линией. Поэтому, если у вас есть несколько вещей, выполняемых в одной строке, вы не можете изолировать вторую вещь. Он остановится на первом утверждении. (Это также одна из причин, по которой некоторые люди не любят одну строку ifs.) Это просто немного усложняет отладку.

Я обычно не использую двоеточия в производственном коде по этой причине. Однако я использую их для улучшения краткости кода" копировать/вставлять", который я публикую в форумы и прочее. YMMV:)

Я только когда-либо использовал его, когда я clsoing набор записей и установка переменной в ничто. Я считаю, что одна строка вместо двух дает мне больше строк кода на экране и не умаляет читаемости.

Я видел, как он используется в простых случаях выбора, таких как следующее, Но это было бы так далеко, как я бы пошел.

и даже тогда я бы выстроились часть" msg postinfo clearfix">

Я понимаю, что это очень старый вопрос, но это был первый результат моего поиска в Google, поэтому я надеюсь, что меня можно простить за вторжение сюда.

есть одна ситуация (именно то, что привело меня сюда на самом деле), в которой этот подход не только полезен, это единственный способ достичь желаемого результата: немедленное окно. Любой код, который вы хотите выполнить в окне Immediate, должен быть в одной строке. Поэтому, чтобы использовать любую форму Do, Case, For, While или With в ближайшем будущем окно, вам нужно будет использовать двоеточия.

Это и считается плохой практикой на большинстве сайтов, на которых я работал. И большинством разработчиков VB, с которыми я работал. И в моей голове. Если я увижу его, то признаю, что почти наверняка изменю его. Я говорю "почти", потому что допускаю возможность того, что я мог бы найти кусок кода, который выглядел бы лучше. Хотя я не ожидаю увидеть его в своей жизни.

мне также очень не нравится one-line** If * * s любой.

оба, скорее всего, похмелье от дней мониторов VGA (640x480); это не оправдание в эти дни.

Я никогда не видел, чтобы это упоминалось в официальном качестве ни в одной из компаний, в которых я работал. Но я думаю, что чрезмерное использование двоеточий может начать делать ваш код менее читаемым и более болезненным для поддержания.

Я сам иногда использую их, например, при проверке отмены в одном из моих последних проектов:

ввод этого в сохранял мой код читаемым, чем альтернативный блок IF.

но это может быть слишком далеко, я недавно унаследовал проект, который изобилует примерами использования двоеточия слишком далеко :

лично я считаю, что выше, чтобы быть немного много.

Я видел, как он используется в объявлениях классов при использовании наследования или реализации интерфейса:

но как и другие, я также не рекомендуем его использовать.

ответ на вопрос-нет. Все, что выходит за рамки "нет", чисто субъективно и расточительно, независимо от ответа за пределами простого "нет". Ниже приведена моя трата на печать.

вы что-то вроде раба? Делай, что хочешь. Вы-центр своей вселенной, а не какой-то незнакомец из StackOverflow. Если вы работаете в компании, вопрос немой, потому что стиль кодирования уже будет определен и полностью вне вашего контроля. Что касается самого себя, то кто в этой вселенной собирается когда-либо в вечности посмотрите на let along заботиться о вашем коде.

Я бы выбрал a над B. как очевидно, это показывает цель двоеточия без использования двоеточия. Это для экономии места. Ниже экономит место и делает код гораздо более читаемым. Все Просто И Глупо. Же для троичной ? : использование. Когда код по своей сути сложен, тогда двоеточие, одна строка, если тогда еще, или троичный больше не следует рассматривать.

При написании кода иногда можно создавать длинные операторы, требующие горизонтальной прокрутки в редакторе кода. Хотя это не влияет на способ выполнения кода, он затрудняет чтение кода в том виде, в котором он отображается на мониторе. В таких случаях следует рассмотреть возможность разбиения одного длинного оператора на несколько строк.

Разбиение одного оператора на несколько строк

Используйте символ продолжения строки, который является подчеркиванием ( _ ), в точке, в которой должна прерываться линия. Символу подчеркивания должен предшествовать пробел и сразу за ним следует символ конца строки (возврат каретки) или (начиная с версии 16,0) комментарий, за которым следует символ возврата каретки.

в некоторых случаях, если опустить символ продолжения строки, компилятор Visual Basic неявно продолжит инструкцию на следующей строке кода. Список элементов синтаксиса, для которых можно опустить символ продолжения строки, см. в разделе «неявные продолжения строки» в инструкциях.

В следующем примере инструкция разбивается на четыре строки с символами продолжения строки, завершающими все, кроме последней строки.

Использование этой последовательности упрощает чтение кода в сети и при печати.

Символ продолжения строки должен быть последним символом в строке. Вы не можете подписаться на него другим в той же строке.

Существуют некоторые ограничения, в которых можно использовать символ продолжения строки. Например, нельзя использовать его в середине имени аргумента. Можно прервать список аргументов с помощью символа продолжения строки, но отдельные имена аргументов должны оставаться неизменными.

Комментарий нельзя продолжить с помощью символа продолжения строки. Компилятор не проверяет символы в комментарии на наличие специального значения. Для многострочного комментария повторите символ комментария ( ' ) в каждой строке.

хотя размещение каждой инструкции в отдельной строке является рекомендуемым методом, Visual Basic также позволяет размещать несколько инструкций в одной строке.

Иногда в коде необходимо использовать специальные символы, то есть символы, не являющиеся алфавитными или числовыми. знаки пунктуации и специальные символы в Visual Basic кодировке имеют различные варианты использования, от организации текста программы до определения задач, выполняемых компилятором или скомпилированной программой. Эти знаки не определяют операции, подлежащие выполнению.

Круглые скобки

Используйте круглые скобки при определении процедуры, например Sub или Function . Все списки аргументов процедур необходимо заключать в круглые скобки. Также круглые скобки используются для помещения переменных или аргументов в логические группы, особенно для переопределения порядка приоритета операторов по умолчанию в сложном выражении. Это показано в следующем примере.

После выполнения предыдущего кода значение d равно 8,225, а значение e равно 3. Вычисление для d использует приоритет по умолчанию / over + и эквивалентен d = b + (c / a) . Круглые скобки в вычислении для e переопределения приоритета по умолчанию.

Разделители

Разделители выполняют свои имена: они разделяют разделы кода. в Visual Basic символ разделителя является двоеточием ( : ). Используйте разделители, если требуется включить несколько операторов в одну строку, а не отдельные строки. Это экономит пространство и повышает удобочитаемость кода. В следующем примере показаны три инструкции, разделенные двоеточиями.

Символ двоеточия ( : ) также используется для обозначения метки оператора. Дополнительные сведения см. в разделе инструкции. Метки.

Объединение

Используйте & оператор для объединения или связывания строк. Не путайте его с + оператором, который добавляет вместе числовые значения. При использовании + оператора для сцепления с числовыми значениями можно получить неверные результаты. В следующем примере это показано.

После выполнения предыдущего кода значение resultA равно 21,01, а значение resultB равно "10,0111".

Операторы доступа к членам

Для доступа к члену типа используется оператор dot ( . ) или восклицательный знак ( ! ) между именем типа и именем члена.

Точка (.) Станции

Используйте . оператор для класса, структуры, интерфейса или перечисления в качестве оператора доступа к членам. Элемент может быть полем, свойством, событием или методом. Это показано в следующем примере.

Восклицательный знак (!) Станции

Оператор используется ! только для класса или интерфейса в качестве оператора доступа в словаре. Класс или интерфейс должен иметь свойство по умолчанию, принимающее один String аргумент. Идентификатор, непосредственно следующий за ! оператором, становится значением аргумента, передаваемым в свойство по умолчанию в виде строки. В следующем примере это показано.

В трех строках вывода MsgBox отображается значение 32856 . В первой строке используется традиционный доступ к свойству index , а во втором используется тот факт, который index является свойством по умолчанию класса hasDefault , а третий использует словарный доступ к классу.

обратите внимание, что второй операнд ! оператора должен быть допустимым Visual Basic идентификатором, не заключенным в двойные кавычки ( " " ). Иными словами, нельзя использовать строковый литерал или строковую переменную. Следующее изменение в последней строке MsgBox вызова приводит к ошибке, поскольку "X" является заключенным строковым литералом.

Ссылки на коллекции по умолчанию должны быть явными. В частности, нельзя использовать ! оператор для переменной с поздним связыванием.

Помимо указания типа данных в операторе объявления, можно принудительно указать тип данных некоторых программных элементов с помощью символа типа. Символ типа должен следовать непосредственно за элементом, не имеющим промежуточных символов любого вида.

Символ типа не является частью имени элемента. На элемент, определенный с помощью символа типа, можно ссылаться без символа типа.

Символы типа идентификатора

Visual Basic предоставляет набор символов типа идентификатора , которые можно использовать в объявлении для указания типа данных переменной или константы. В следующей таблице приведены доступные символы типа идентификатора с примерами использования.

Для Boolean Byte типов данных. Char , Date , Object SByte Short UInteger ULong , или UShort для любых составных типов данных, таких как массивы или структуры, символы типа Identifier не существуют.

в некоторых случаях можно добавить $ символ в Visual Basic функцию, например Left$ Left , вместо, чтобы получить возвращаемое значение типа String .

Во всех случаях символ типа идентификатора должен следовать непосредственно за именем идентификатора.

Символы типа литерала

Литерал — это текстовое представление конкретного значения типа данных.

Типы литералов по умолчанию

Форма литерала в том виде, в котором она отображается в коде, обычно определяет его тип данных. В следующей таблице показаны эти типы по умолчанию.

Принудительные типы литералов

Visual Basic предоставляет набор символов типа литерала, который можно использовать для принудительного применения литерала к типу данных, отличному от того, который указывает его форма. Это можно сделать, добавив символ в конец литерала. В следующей таблице показаны доступные символы типа литерала с примерами использования.

Символ типа литерала Тип данных Пример
S Short I = 347S
I Integer J = 347I
L Long K = 347L
D Decimal X = 347D
F Single Y = 347F
R Double Z = 347R
US UShort L = 347US
UI UInteger M = 347UI
UL ULong N = 347UL
C Char Q = "."C

Для Boolean Byte типов данных. Date Object SByte , или String для любых составных типов данных, таких как массивы или структуры, не существует символов типа литерала.

Во всех случаях символ типа литерала должен следовать непосредственно за литеральным значением.

Шестнадцатеричные, двоичные и восьмеричные литералы

Компилятор обычно интерпретирует целочисленный литерал в десятичной системе счисления (с основанием 10). Можно также определить целочисленный литерал как шестнадцатеричное (с основанием 16) числом с &H префиксом, как двоичное (основание 2) с &B префиксом, а также как восьмеричное (основание 8) число с &O префиксом. Цифры, которые следуют за префиксом, должны соответствовать системе счисления. Это показано в следующей таблице.

Базовый номер Prefix Допустимые разрядные значения Пример
16 (основание 16) &H 0-9 и A-F &HFFFF
Двоичный (основание 2) &B 0—1 &B01111100
8 (основание 8) &O 0-7 &O77

Можно следовать предопределенному литералу с символом типа литерала. В следующем примере приведена иллюстрация этого.

В предыдущем примере counter имеет десятичное значение-32768 и flags имеет десятичное значение + 32768.

начиная с Visual Basic 15,5, можно также использовать символ подчеркивания () в _ качестве начального разделителя между префиксом и шестнадцатеричными, двоичными или восьмеричными цифрами. Пример:

Чтобы использовать символ подчеркивания в качестве начального разделителя, нужно добавить в файл проекта Visual Basic (*.vbproj) следующий элемент:

Что именно двоеточие ":" (разделитель операторов) делает в VBA?

":" в значении "новая строка" не может объяснить это поведение:

Этот трехстрочный код успешно компилируется:


Эта двухстрочная версия завершается с ошибкой «Ошибка компиляции: иначе без If»:


Эта 1-строчная версия завершается с ошибкой «Ошибка компиляции: End If без блока If»:


Итак, как точно описать значение «:» в соответствии с этим поведением?

3 ответа

Двоеточие позволяет записывать оператор в одну строку и обозначает конец допустимого оператора VBA.

Однако некоторые двоеточия могут быть опущены (или добавлены автоматически редактором VBA) в зависимости от появления каких-либо операторов else . End if также может быть опущен в некоторых случаях

Например, ваш однострочный оператор будет выполняться, если он был написан как:

If 1 = 2 Then MsgBox "impossible" Else: MsgBox "OK"

Обратите внимание на отсутствие End if . Ваш двухстрочный оператор синтаксически неверен и выдаст ошибку.

Двоеточие : позволяет поместить 2 или более инструкций в одну строку.
Then имеет 2 синтаксиса:

По вашим наблюдениям, Then должна быть последней инструкцией в строке, чтобы попасть в случай b.

Я считаю : более полезным в 2 ситуациях:

С Dim (если вам не требуется, чтобы все Dim были в начале процедуры)

Двоеточие не заменяет новую строку.
Это позволяет вам поместить несколько операторов в одну строку, но это все еще считается одной строкой для грамматики.

документация специально показывает использование двоеточия с If :

В однострочной форме возможно выполнение нескольких операторов в результате решения If. Then . Все операторы должны быть в одной строке и разделены двоеточиями, как в следующем утверждении:

В отличие от многострочной формы

Вы помещаете несколько операторов в одну строку, но по-прежнему используете однострочную форму оператора If без End If .

Читайте также: