Excel에서 VBA 코드를 작성할 때 모든 단계에서 기본 제공 연산자 집합이 사용됩니다. 이러한 연산자는 수학, 문자열, 비교 및 ​​논리 연산자로 나뉩니다. 다음으로 각 연산자 그룹에 대해 자세히 살펴보겠습니다.

수학 연산자

주요 VBA 수학 연산자는 아래 표에 나열되어 있습니다.

표의 오른쪽 열은 괄호가 없는 경우 기본 연산자 우선 순위를 보여줍니다. 표현식에 괄호를 추가하여 VBA 문이 실행되는 순서를 원하는 대로 변경할 수 있습니다.

문자열 연산자

Excel VBA의 기본 문자열 연산자는 연결 연산자입니다. & (병합):

비교 연산자

비교 연산자는 두 숫자 또는 문자열을 비교하고 반환하는 데 사용됩니다. 부울유형 부울(참 또는 거짓). 다음 표에는 기본 Excel VBA 비교 연산자가 나열되어 있습니다.

논리 연산자

비교 연산자와 같은 논리 연산자는 유형의 부울 값을 반환합니다. 부울(참 또는 거짓). 기본 논리 연산자 Excel VBA는 아래 표에 나열되어 있습니다.

위의 표에는 VBA에서 사용할 수 있는 모든 논리 연산자가 나열되어 있지 않습니다. 전체 목록논리 연산자는 Visual Basic 개발자 센터 사이트에서 찾을 수 있습니다.

내장 기능

VBA에는 코드를 작성할 때 사용할 수 있는 많은 내장 함수가 있습니다. 다음은 가장 일반적으로 사용되는 몇 가지입니다.

기능 동작
복근 주어진 숫자의 절대값을 반환합니다.
  • 복근(-20)값 20을 반환합니다.
  • 복근(20)값 20을 반환합니다.
Chr 매개변수의 숫자 값에 해당하는 ANSI 문자를 반환합니다.
  • Ch(10)줄 바꿈을 반환합니다.
  • Ch(97)문자를 반환 .
날짜 현재 시스템 날짜를 반환합니다.
날짜추가 지정된 날짜에 지정된 시간 간격을 추가합니다. 함수 구문:

날짜추가( 간격 , 숫자 , 날짜 )

주장은 어디에 간격주어진 시간 간격의 유형을 결정합니다 데이트인수에 지정된 금액으로 숫자 .

논쟁 간격다음 값 중 하나를 사용할 수 있습니다.

  • DateAdd("d", 32, "2015년 1월 1일") 2015년 1월 1일 날짜에 32일을 더하여 2015년 2월 2일 날짜를 반환합니다.
  • DateAdd("ww", 36, "2015년 1월 1일") 2015년 1월 1일 날짜에 36주를 더하고 2015년 9월 9일 날짜를 반환합니다.
날짜차이 주어진 두 날짜 사이의 지정된 시간 간격 수를 계산합니다.
  • DateDiff("d", "01/01/2015", "02/02/2015") 2015년 1월 1일과 2015년 2월 2일 사이의 일 수를 계산하고 32를 반환합니다.
  • DateDiff("ww", "01/01/2015", "03/03/2016") 2015년 1월 1일과 2016년 3월 3일 사이의 주 수를 계산하고 61을 반환합니다.
주어진 날짜의 날짜에 해당하는 정수를 반환합니다.

예시: 일(“2015년 1월 29일”)숫자 29를 반환합니다.

주어진 시간의 시간 수에 해당하는 정수를 반환합니다.

예시: 시간(“22:45:00”)숫자 22를 반환합니다.

InStr 정수와 두 개의 문자열을 인수로 사용합니다. 정수로 지정된 위치에서 검색을 시작하여 첫 번째 문자열 내에서 두 번째 문자열의 발생 위치를 반환합니다.
  • InStr(1, "검색어입니다.", "단어")숫자 13을 반환합니다.
  • InStr(14, "여기에 검색어가 있고 여기에 다른 검색어가 있습니다.", "단어")숫자 38을 반환합니다.

메모:숫자 인수를 지정하지 않을 수 있습니다. 이 경우 함수의 두 번째 인수에 지정된 문자열의 첫 번째 문자부터 검색이 시작됩니다.

정수 주어진 숫자의 정수 부분을 반환합니다.

예시: 정수(5.79)결과 5를 반환합니다.

이스다테 보고 진실주어진 값이 날짜인 경우 또는 거짓– 날짜가 아닌 경우.
  • IsDate(“2015년 1월 1일”)보고 진실;
  • 날짜(100)보고 거짓.
오류 보고 진실주어진 값이 오류인 경우, 또는 거짓– 오류가 아닌 경우.
누락 선택적 프로시저 인수의 이름은 함수에 인수로 전달됩니다. 누락보고 진실해당 프로시저 인수에 대해 값이 전달되지 않은 경우.
숫자 보고 진실주어진 값을 숫자로 처리할 수 있으면 그렇지 않으면 반환 거짓.
왼쪽 주어진 문자열의 시작 부분부터 지정된 수의 문자를 반환합니다. 함수 구문은 다음과 같습니다.

왼쪽( , 길이 )

어디 - 이것은 원래 문자열, ㅏ 길이문자열의 시작 부분부터 계산하여 반환할 문자 수입니다.

  • 왼쪽("abvgDeZicleMn", 4)문자열 "abcg"를 반환합니다.
  • 왼쪽("abvgDeZicleMn", 1)문자열 "a"를 반환합니다.
문자열의 문자 수를 반환합니다.

예시: 렌("abcdej")숫자 7을 반환합니다.

주어진 날짜의 월에 해당하는 정수를 반환합니다.

예시: 월(“2015/01/29”)값 1을 반환합니다.

중반 주어진 문자열의 중간에서 지정된 수의 문자를 반환합니다. 함수 구문:

중반( , 시작 , 길이 )

어디 원래 문자열입니다 시작- 추출할 문자열의 시작 위치, 길이추출할 문자의 수입니다.

  • Mid("abvgDeZicleMn", 4, 5)문자열 "where"를 반환합니다.
  • Mid("abvgDeZicleMn", 10, 2)문자열 "cl"을 반환합니다.
주어진 시간의 분 수에 해당하는 정수를 반환합니다. 예: 분("22:45:15")값 45를 반환합니다.
지금 현재 시스템 날짜 및 시간을 반환합니다.
오른쪽 주어진 문자열의 끝에서 지정된 수의 문자를 반환합니다. 함수 구문:

오른쪽( , 길이 )

어디에 는 원래 문자열이고 길이주어진 문자열의 끝에서 계산하여 추출할 문자의 수입니다.

  • Right("abvgDeZicleMn", 4)문자열 "clmn"을 반환합니다.
  • Right("abvgDeZicleMn", 1)문자열 "n"을 반환합니다.
주어진 시간의 초 수에 해당하는 정수를 반환합니다.

예시: 두 번째(“22:45:15”)값 15를 반환합니다.

평방 인수에 전달된 숫자 값의 제곱근을 반환합니다.
  • 제곱(4) 2를 반환합니다.
  • 광장(16)값 4를 반환합니다.
시간 현재 시스템 시간을 반환합니다.
유바운드 지정된 배열 차원의 위 첨자를 반환합니다.

메모:을 위한 다차원 배열선택적 인수로 반환할 차원 인덱스를 지정할 수 있습니다. 지정하지 않으면 기본값은 1입니다.

할당 연산자(=)

할당 연산자는 표현식의 결과를 변수에 할당하는 데 사용됩니다.

할당 연산자에는 두 가지 구문 형식이 있습니다.

변수 이름 = 표현식

이름- 모든 VBA 변수

표현- 모든 VBA 표현식

대입문을 실행할 때 VBA는 먼저 대입문의 오른쪽에 있는 표현식을 평가한 다음 등호 왼쪽에 이름이 있는 변수에 표현식의 결과를 저장합니다.

X = 5 + 7; Y = X + 5 ; Z = X - Y; A=B; 나 = 나 + 1

작업의 왼쪽 및 오른쪽 부분에 동일한 변수가 포함되어 있는 경우 시작 사용자는 마지막 할당 작업의 의미를 이해하지 못하는 경우가 있습니다. 이 경우 우선 대입연산자의 우변 식을 평가한 결과를 중간 메모리 셀에 대입하고 이 결과를 좌변 변수에 대입한다.

예를 들어, 대입문 A = A +5에서 대입 연산 전의 변수 A에 값 7이 포함된 경우 연산 후에는 값 12(7+5)가 포함됩니다.

기억해야 합니다.

· 수치 변수(또는 표현식)를 수치 유형의 다른 변수(또는 Variant 유형의 변수)에 할당할 수 있습니다.

· 더 낮은 정밀도(예: Double - Long)로 형식화된 변수에 숫자 식을 할당하면 VBA는 새 값을 취하는 변수의 정밀도와 일치하도록 식의 값을 반올림합니다.

변수인 경우 유형 문자열할당된 유형 변수숫자가 포함된 변형 VBA는 자동으로 해당 숫자를 문자열로 변환합니다.

더하기 연산자(+)

더하기 연산자는 단순 더하기를 수행합니다. 두 피연산자는 VBA가 숫자로 변환할 수 있는 숫자 표현식 또는 문자열이어야 합니다. 더하기 연산자를 사용하여 날짜 데이터에 대한 산술 연산을 수행할 수도 있습니다.

더하기 표현식의 결과 데이터 유형은 일반적으로 해당 표현식에서 가장 정확한 유형과 동일합니다. 그러나 다음과 같은 예외가 있습니다.

· Single 및 Long 유형을 추가한 결과는 Double이 됩니다.

· 다른 데이터 유형에 날짜 유형을 추가한 결과는 항상 날짜가 됩니다.

· 결과가 Integer 유형의 범위를 초과하면 VBA는 이를 Long으로 변환합니다.

· 결과가 Long, Single, Date 유형을 초과하면 VBA는 이를 Double로 변환합니다.

· 덧셈 식의 피연산자가 Null이면 덧셈 식의 결과도 Null입니다.

Byte, Integer, Long, Single, Double, Currency와 같은 숫자 데이터 유형의 정밀도 증가 순서를 상기하십시오.

VBA가 산술 연산의 결과로 데이터 유형을 변환하는 방법을 명확하게 이해해야 합니다. 이것은 코드를 작성할 때 많은 "불필요한" 오류를 피하는 데 도움이 될 것입니다.

빼기 연산자(-)

빼기 연산자는 두 가지 작업을 수행합니다. 하나의 숫자를 다른 숫자에서 빼는 데 사용됩니다. 단항 빼기 기호를 나타냅니다(이것은 음수임을 나타내기 위해 숫자 앞에 놓이는 빼기 기호입니다). 변수나 표현식 앞에 단항 빼기를 넣는 것은 해당 숫자에 -1을 곱하는 것과 같습니다.

빼기 식의 두 피연산자는 VBA에서 숫자로 변환할 수 있는 숫자 변수(식) 또는 문자열 식이어야 합니다. 빼기 연산자를 사용하여 날짜를 처리할 수 있습니다.

VBA는 더하기 연산자를 사용하는 식에 대해 수행하는 것과 동일한 규칙을 사용하여 빼기 식 결과의 데이터 형식을 결정합니다. 그러나 추가 사항이 있습니다.

· 식의 두 피연산자가 모두 Date 형식이면 식의 결과는 Double 형식이 됩니다.

곱하기 연산자(*)

곱하기 연산자는 두 숫자를 곱합니다. 곱하기 표현식의 결과는 두 피연산자의 곱입니다. 곱셈 식의 두 피연산자는 VBA에서 숫자로 변환할 수 있는 숫자 식 또는 문자열이어야 합니다.

VBA는 더하기 연산자를 사용하는 식에 대해 수행하는 것과 동일한 곱셈 식 결과의 데이터 형식을 결정하는 규칙을 따릅니다. 곱셈 표현식에서 날짜 값을 포함하는 모든 Variant 변수는 숫자 값으로 변환됩니다.

나눗셈 연산자(/)

부동 소수점 나누기 연산자는 피연산자의 일반적인 산술 나누기를 수행합니다.

나눗셈 식에서 첫 번째 피연산자는 두 번째 피연산자로 나뉩니다. 나눗셈의 결과는 몫입니다.

부동 소수점 나누기 식의 두 피연산자는 VBA에서 숫자로 변환할 수 있는 숫자 식 또는 문자열이어야 합니다.

나눗셈 식에서 하나 이상의 피연산자가 Null 유형이면 나눗셈의 결과도 Null이 됩니다.

부동 소수점 나누기 연산의 데이터 유형은 다음을 제외하고 Double입니다.

나누기 식의 두 피연산자는 모두 Integer 또는 Single 유형이며 결과는 Single입니다.

표현식의 결과가 Single 유형의 값 범위를 넘지 않는 경우.

정수 나누기(\)

정수 나누기는 결과가 항상 소수 부분이 없는 정수라는 점에서 부동 소수점 나누기와 다릅니다.

정수 나누기 식의 두 피연산자는 VBA에서 숫자로 변환할 수 있는 숫자 식 또는 문자열이어야 합니다.

정수 나누기 연산을 수행하기 전에 VBA는 각 피연산자를 Integer 또는 Long 유형(정수 나누기의 결과와 동일한 유형)의 숫자로 반올림합니다.

VBA는 정수 나누기 식 결과의 분수 나머지를 버립니다(반올림하지 않습니다!). 예를 들어, 표현식 22\5 및 24\5는 동일한 결과 = 4를 갖습니다.

정수 나누기 식에서 하나 이상의 피연산자가 Null 유형이면 나누기 결과도 Null입니다.

모듈로 부문(Mod)

모듈로 나누기는 정수 나누기를 보완합니다. 모듈로 나누기에서 표현식은 나누기 연산의 나머지만 정수로 반환합니다.

22 모드 5 = 2

24 모드 5 = 4

25 모드 5 = 0

모듈로 나누기의 나머지 속성은 정수 나누기와 동일합니다.

지수(^)

지수 연산자는 숫자를 거듭제곱합니다.

5 ^ 3 =125

지수 표현식의 두 연산자는 VBA가 숫자로 변환할 수 있는 숫자 표현식 또는 문자열이어야 합니다.

지수 연산자의 왼쪽에 있는 피연산자는 오른쪽에 있는 피연산자가 정수인 경우에만 음수가 될 수 있습니다.

표현식의 결과는 Double 유형입니다.

표현식에서 하나 이상의 피연산자가 Null 유형이면 지수화 결과도 Null이 됩니다.

위의 내용을 요약하자면 다음과 같습니다.

VBA 논리 연산자

논리 연산자의 피연산자로 부울 결과가 있는 유효한 표현식과 부울 값으로 변환할 수 있는 숫자를 사용할 수 있습니다.

논리 연산의 결과는 부울 유형의 값입니다(또는 피연산자 중 하나 이상이 Null인 경우 Null).

논리 연산자 AND

통사론:

Operand_1 AND Operand_2

AND 연산자는 다음을 수행합니다. 논리적 접속.

이 연산의 결과는 두 피연산자가 모두 True일 때만 True이고 그렇지 않으면 False입니다.

진리표

AND 연산자는 여러 피연산자에 사용할 수 있습니다.

(5<7) AND (4>3) AND(5=6) 결과는 False가 됩니다.

피연산자의 수에 관계없이 논리적 결과 AND 연산표현식의 모든 피연산자가 True로 평가되는 경우에만 True가 됩니다. 다른 경우 결과는 False입니다. 피연산자는 괄호로 묶여 있습니다. VBA는 먼저 대괄호 안의 각 피연산자의 값을 평가한 다음 전체 표현식을 평가합니다.

논리 연산자 OR

통사론:

피연산자_1 또는 피연산자_2

OR 연산자는 다음을 수행합니다. 논리적 분리.

이 연산의 결과는 피연산자 중 하나 이상이 True이면 True이고 그렇지 않으면 False입니다.

진리표

OR 연산자는 여러 피연산자에 사용할 수 있습니다.

(5<7) OR (4>3) OR (5=6) 결과는 True가 됩니다.

피연산자 수에 관계없이 표현식의 피연산자 중 하나 이상이 True로 평가되면 논리 OR 연산의 결과는 항상 True가 됩니다. 그렇지 않으면 결과는 False가 됩니다.

AND 및 OR 연산자를 결합할 수 있습니다.

((5<7) AND (4>3)) OR (5=6) 결과는 참이 됩니다.

부울 연산자 NOT

통사론:

피연산자가 아님

NOT 연산자수행 논리적 부정.

NOT 연산자는 하나의 피연산자만 사용합니다.

진리표

AND OR NOT 연산자는 다음과 같이 결합할 수 있습니다.

((5<7) AND (4>3)) OR NOT(5=6) 결과는 True가 됩니다.

논리 연산자 XOR

통사론:

Operand_1 XOR Operand_2

XOR 연산자는 다음을 수행합니다. 논리적 예외.

피연산자가 다음과 같은 경우 이 연산의 결과는 True입니다. 다른 의미, 그렇지 않으면 - 거짓.

진리표

((5<7) AND (4>3)) OR NOT(5=6) XOR(5=5) 결과는 False입니다.

논리 연산자 EQV

통사론:

피연산자_1 EQV 피연산자_2

EQV 연산자는 연산자입니다. 논리적 등가.

이 연산의 결과는 피연산자의 값이 같으면 True이고 그렇지 않으면 False입니다.

진리표

((5<7) AND (4>3)) OR NOT(5=6) EQV(5=5)는 True가 됩니다.

비교 연산자

일반적으로 비교 연산은 추가 연산 과정에 대한 결정을 내리기 위해 문을 반복하는 데 사용됩니다.

모든 비교 작업의 결과는 부울 값(True, False)입니다.

비교 식의 두 피연산자가 동일한 데이터 형식인 경우 VBA는 해당 형식에 대해 단순 비교를 수행합니다.

비교 식의 두 피연산자가 특정 형식이고 해당 형식이 호환되지 않으면 VBA에서 형식 불일치 오류가 발생합니다.

비교 식의 피연산자 중 하나 또는 모두가 Variant 형식의 변수인 경우 VBA는 Variant 형식을 호환 가능한 형식으로 변환하려고 시도합니다.

VBA 연산자: 산술, 부울, 비교, 할당

운영자실행할 수 있는 VBA 코드의 가장 작은 단위입니다. 명령문은 변수를 선언 또는 정의하거나 VBA 컴파일러 옵션을 설정하거나 프로그램에서 일부 작업을 수행할 수 있습니다.

VBA에는 7개의 산술 연산자만 있습니다. 4개의 표준 연산자: 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 외 3개:

  • 지수(^), 예 2^3 = 8 ;
  • 정수 나누기(\). 첫 번째 숫자를 두 번째 숫자로 나누고 버립니다(반올림 아님). 분수 부분. 예를 들어, 5\2 = 2 ;
  • 모듈로 분할(Mod). 첫 번째 숫자를 두 번째 숫자로 나누고 나눗셈의 나머지만 반환합니다. 예를 들어, 5 모드 2 = 1.

VBA의 할당 연산자는 등호입니다. 다음과 같이 작성할 수 있습니다.

nVar = 10

또는 더 간단합니다.

nvar = 10

두 번째 경우에는 등호를 등호 연산자와 혼동하지 마십시오.

표현

nvar = 10

"변수 nVar를 10으로 설정"을 의미하고 행이 다음과 같은 경우:

만약 (nVar = 10)

"변수 nVar의 값이 10인 경우"를 의미합니다.

변수에 개체를 할당해야 하는 경우 다른 방식으로 수행됩니다.

VBA에는 8개의 비교 연산자만 있습니다.

  • 평등(=), 예를 들어, 만약 (nVar = 10);
  • 보다 크고 보다 작음(> 및<), например, 경우(nVar > 10);
  • 크거나 같음 및 작거나 같음(>= 및<=), например, 만약 (nVar >= 10);
  • 같지 않다(<>), 예를 들어, If(nVar<>10) ;
  • 객체 비교(Is). 개체 변수가 동일한 개체를 참조하는지 아니면 다른 개체를 참조하는지 여부를 결정합니다. 예를 들면 다음과 같습니다. If(obj1은 obj2);
  • 유사성(like). 문자열 개체를 패턴과 비교하고 패턴이 일치하는지 확인합니다.

비교 연산자는 항상 true 또는 false를 반환합니다. 어설션이 true이면 true이고 false이면 false입니다.

문자열 값 비교에 대해 조금:

  • 문자열 값을 비교할 때 대소문자를 구분합니다.
  • 문자열 값의 공백도 고려됩니다.
  • 비교할 때 텍스트 문자열 more/less는 기본적으로 단순히 비교됩니다. 바이너리 코드문자 - 더 많거나 적은. 알파벳 순서를 사용해야 하는 경우 다음 명령을 사용할 수 있습니다.

옵션 비교 텍스트

Like 연산자에 대해 조금 더 자세히 알아보세요. 일반 구문은 다음과 같습니다.

식1처럼 식2

이 경우 Expression1은 VBA 텍스트 표현식이고 Expression2는 Like 연산자에 전달되는 템플릿입니다. 이 패턴에서 특수 와일드카드를 사용할 수 있습니다(표 3.1 참조).

탭. 3.1 LIKE 연산자에 대한 와일드카드

매우 자주 여러 조건을 테스트할 때 논리 연산자가 사용됩니다.

  • AND - 논리적 AND, 두 조건이 모두 참이어야 합니다.
  • OR - 논리적 OR, 조건 중 하나 이상이 참이어야 합니다.
  • NOT - 논리적 부정, 조건이 거짓이면 TRUE를 반환합니다.
  • XOR은 논리적 예외입니다. E1 XOR 표현식에서 E2는 E1 = TRUE인 경우에만 TRUE를 반환하거나 E2 = TRUE인 경우에만 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
  • EQV - 두 표현식의 동등성, 값이 같으면 TRUE를 반환합니다.
  • IMP - 함축, E1 = TRUE이고 E2 = FALSE이면 FALSE를 반환하고, 그렇지 않으면 TRUE를 반환합니다.

AND, OR, NOT에 대해 기억해야 합니다. 다른 논리 연산자는 거의 사용되지 않습니다.

거의 모든 VBA 프로그램은 연결 연산자를 사용합니다. VBA - + 또는 &에는 두 가지가 있습니다. 다음과 같은 이유로 항상 &를 사용하는 것이 좋습니다.

  • &를 사용할 때 숫자 값을 문자열로 자동 변환합니다. 실수할 위험이 없습니다.
  • + 연산자를 사용할 때 Null 유형의 값에 문자열 값을 추가하면 Null이 생성됩니다.

MsgBox "사용자에게 보내는 메시지" 및 vUserName

연산자가 적용되는 순서는 괄호를 사용하여 제어할 수 있습니다.

VBA가 덧셈, 뺄셈, 곱셈, 나눗셈, 지수와 같은 산술 연산과 정수 나누기 및 모듈로와 같은 특수 연산을 수행하는 방법을 자세히 살펴보겠습니다. 아래 표는 산술 VBA 표현식을 작성할 때 사용되는 연산 기호를 보여줍니다.

표현식은 단일 값을 표현하는 값 또는 값 그룹입니다. 표현식의 결과는 특정 데이터 유형의 단일 값입니다. 연산의 기호(지정)는 표현식의 특정 값에 대해 연산을 수행하는 데 사용됩니다. 표현식의 결과를 변수에 할당하기 위해 할당 연산자(=)가 사용됩니다. 할당 연산자는 할당 연산자의 오른쪽에 있는 표현식이 나타내는 값을 해당 연산자의 왼쪽에 있는 변수가 참조하는 메모리 위치에 저장합니다.

아래의 모든 연산에서 두 피연산자는 VBA가 숫자로 변환할 수 있는 숫자 표현식 또는 문자열이어야 합니다.

덧셈

(+) 기호는 더하기 연산을 수행하는 데 사용됩니다. 용어는 숫자 표현식, VBA가 숫자로 변환할 수 있는 문자열 또는 산술에도 사용할 수 있는 날짜여야 합니다.

Sub Slozhenie() "기호 "+"가 있는 산술 표현식의 예 Dim A1, A2, A3 As Integer "변수 A1=1 선언 "변수 A1에 값 1 할당 A2=2 "변수 A2에 값 2 할당 A3=A1+A2 "결과 추가 변수 A3 MsgBox A3 할당 "End Sub 대화 상자에서 A3 출력

덧셈 식 결과의 데이터 형식은 몇 가지 예외를 제외하고는 일반적으로 해당 식에서 가장 정확한 형식과 동일합니다. 이 규칙에 대한 모든 예외는 예제에 명확하게 표시되어 있습니다.

빼기

기호(-)는 빼기 연산을 수행하고 음수를 나타내는 데 사용됩니다(변수 또는 표현식 앞에 배치될 때 -1을 곱한 것과 같은 의미). 숫자가 음수임을 나타내기 위해 숫자 앞에 놓이는 빼기 기호를 단항 빼기 기호라고 합니다.

빼기 식 결과의 데이터 형식을 결정하기 위해 VBA는 더하기 연산자의 부호를 사용하는 식과 동일한 규칙을 따르지만 두 가지 추가 규칙이 있습니다.

규칙 1. 빼기 표현식의 피연산자 중 하나가 날짜 유형이면 표현식의 결과도 날짜 유형이 됩니다.

규칙 2. 빼기 표현식의 두 피연산자가 모두 Date 유형이면 표현식의 결과는 Double 유형이 됩니다.

Sub Vychitanie() "부호 있는 산술 표현식 "-"의 예 Dim D1, D2 As Date "변수 선언 D1=Now "값 할당 현재 날짜 variable D1 D2=Now-5 "변수 D2에 날짜 값 할당 MsgBox TypeName(D2), vbOKOnly, "Now-5" MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2" End Sub

곱셈

부호(*)는 곱셈 연산을 수행하는 데 사용되며 이 연산의 결과는 피연산자의 곱입니다. 곱셈 식 결과의 데이터 형식을 결정하기 위해 VBA는 덧셈을 사용하는 식과 동일한 규칙을 사용합니다. 곱셈 표현식에서 날짜 값을 포함하는 모든 Variant 변수는 숫자 값으로 변환됩니다.

"기호가 "*"인 산술 표현식의 예 4*10 "4에 10을 곱합니다. MyVar*2 "MyVar에 2를 곱합니다. MyVar*OtherVar "MyVar에 OtherVar를 곱합니다.

분할

기호(/)는 나누기 연산을 수행하는 데 사용되며 이 기호를 실수의 나누기 기호라고 합니다. 나눗셈 식에서 한 피연산자는 다른 피연산자로 나뉘며 나눗셈의 결과는 몫입니다.

"부호 있는 산술 표현식의 예"/"10/4" 10을 4로 나누기 MyVar/2 "MyVar를 2로 나누기 MyVar/OtherVar" MyVar를 OtherVar로 나누기

나눗셈 식의 피연산자가 Null로 평가되는 경우 식의 결과도 Null입니다. 실제 나누기 표현식의 데이터 유형은 일반적으로 Double이지만 예외가 있습니다.

나누기 식의 두 피연산자가 모두 Integer 또는 Single 형식이면 나누기 식의 결과는 Single 형식입니다. 결과가 Single의 범위를 넘으면 VBA는 이를 Double로 변환합니다.

정수 나눗셈

부호(\)는 나눗셈의 결과가 항상 소수 부분이 없는 정수인 정수 나눗셈 연산을 수행하는 데 사용됩니다. VBA는 정수 나눗셈의 몫을 반올림하지 않고 단순히 정수로 줄이고 소수 부분을 버립니다.

정수 나누기 표현식의 결과 데이터 유형은 Integer 또는 Long입니다. VBA는 표현식의 결과와 일치하는 가장 작은 데이터 유형을 사용합니다.

"기호 "\"가 있는 산술 표현식의 예 10\4 "10을 4로 나눕니다. MyVar를 OtherVar로 나누는 값 2 MyVar\2 "MyVar를 2 MyVar\OtherVar로 나누기"를 반환합니다.

모듈로 분할

부호(Mod)는 모듈로 연산을 수행하는 데 사용됩니다. 모듈로 나누기에서 표현식은 나누기의 나머지만 정수로 반환합니다.

"부호 있는 산술 표현식의 예 "Mod" 8 Mod 2 "는 값 0을 반환합니다. 5.1 Mod 3 "값 2 반환, 6 Mod MyVar "MyVar에 3이 포함된 경우 0 반환

이에 대한 이해할 수 있는 설명 수학 연산주어진 프로그래머 포럼 중 하나에서. 나는 거기에서 인용할 것입니다: "가득 찬 50l 캐니스터와 3l 캔이 있다고 상상해 보세요. 그리고 캔으로 캐니스터에서 물을 퍼내기 시작합니다(완전한 캔만 꺼낼 수 있음). 48l 퍼내고 2리터 남음 .." 즉, 50 Mod 3은 2를 반환합니다.

모듈로 표현식 결과의 데이터 유형은 Integer 또는 Long입니다. VBA는 표현식의 결과에 맞는 가장 작은 유형을 사용합니다.

지수화

기호(^)는 숫자 또는 표현식에 대한 지수 연산을 수행하는 데 사용됩니다. 지수는 숫자 또는 표현식에 몇 번을 곱해야 하는지를 나타냅니다.

"기호 "^"가 있는 산술 표현식의 예 3^3"은 3*3*3과 동일하며 값 27을 반환합니다.


할당 연산자(=)

할당 연산자는 표현식의 결과를 변수에 할당하는 데 사용됩니다.

할당 연산자에는 두 가지 구문 형식이 있습니다.

1 varname = 표현식이라고 합시다.
2 변수 이름 = 표현식


이름- 모든 VBA 변수

표현- 모든 VBA 표현식


할당 연산자의 첫 번째 버전은 초기 기본 프로그래밍 언어에서 사용되었습니다. 두 번째 옵션은 최신 버전의 VBA에서 사용됩니다.


대입문을 실행할 때 VBA는 먼저 대입문의 오른쪽에 있는 표현식을 평가한 다음 등호 왼쪽에 이름이 있는 변수에 표현식의 결과를 저장합니다.


X = 5 + 7; Y = X + 5 ; Z = X - Y; A=B; 나 = 나 + 1


작업의 왼쪽 및 오른쪽 부분에 동일한 변수가 포함되어 있는 경우 시작 사용자는 마지막 할당 작업의 의미를 이해하지 못하는 경우가 있습니다. 이 경우 우선 대입연산자의 우변 식을 평가한 결과를 중간 메모리 셀에 대입하고 이 결과를 좌변 변수에 대입한다.

예를 들어, 대입문 A = A +5에서 대입 연산 전의 변수 A에 값 7이 포함된 경우 연산 후에는 값 12(7+5)가 포함됩니다.

기억해야 합니다.

  • 숫자 변수(또는 표현식)를 숫자 유형의 다른 변수(또는 Variant 유형의 변수)에 할당할 수 있습니다.
  • 더 낮은 정밀도(예: Double - Long)로 형식화된 변수에 숫자 표현식을 할당하면 VBA는 새 값을 취하는 변수의 정밀도와 일치하도록 표현식 값을 반올림합니다.
  • 문자열 변수에 숫자가 포함된 Variant가 할당되면 VBA는 자동으로 숫자를 문자열로 변환합니다.

더하기 연산자(+)

더하기 연산자는 단순 더하기를 수행합니다. 두 피연산자는 VBA가 숫자로 변환할 수 있는 숫자 표현식 또는 문자열이어야 합니다. 더하기 연산자를 사용하여 날짜 데이터에 대한 산술 연산을 수행할 수도 있습니다.


더하기 표현식의 결과 데이터 유형은 일반적으로 해당 표현식에서 가장 정확한 유형과 동일합니다. 그러나 다음과 같은 예외가 있습니다.

  • Single 및 Long 유형을 추가한 결과는 Double입니다.
  • 다른 데이터 유형에 날짜 유형을 추가하면 항상 날짜가 됩니다.
  • 결과가 Integer 유형의 범위를 초과하면 VBA는 이를 Long으로 변환합니다.
  • 결과가 Long, Single, Date 유형을 초과하면 VBA는 이를 Double로 변환합니다.
  • 덧셈 식의 피연산자가 Null이면 덧셈 식의 결과도 Null입니다.

Byte, Integer, Long, Single, Double, Currency와 같은 숫자 데이터 유형의 정밀도 증가 순서를 상기하십시오.

VBA가 산술 연산의 결과로 데이터 유형을 변환하는 방법을 명확하게 이해해야 합니다. 이것은 코드를 작성할 때 많은 "불필요한" 오류를 피하는 데 도움이 될 것입니다.

빼기 연산자(-)

빼기 연산자는 두 가지 작업을 수행합니다. 하나의 숫자를 다른 숫자에서 빼는 데 사용됩니다. 단항 빼기 기호를 나타냅니다(이것은 음수임을 나타내기 위해 숫자 앞에 놓이는 빼기 기호입니다). 변수나 표현식 앞에 단항 빼기를 넣는 것은 해당 숫자에 -1을 곱하는 것과 같습니다.


빼기 식의 두 피연산자는 VBA에서 숫자로 변환할 수 있는 숫자 변수(식) 또는 문자열 식이어야 합니다. 빼기 연산자를 사용하여 날짜를 처리할 수 있습니다.

VBA는 더하기 연산자를 사용하는 식에 대해 수행하는 것과 동일한 규칙을 사용하여 빼기 식 결과의 데이터 형식을 결정합니다. 그러나 추가 사항이 있습니다.
표현식의 두 피연산자가 모두 Date 유형이면 표현식의 결과는 Double 유형이 됩니다.

곱하기 연산자(*)

곱하기 연산자는 두 숫자를 곱합니다. 곱하기 표현식의 결과는 두 피연산자의 곱입니다. 곱셈 식의 두 피연산자는 VBA에서 숫자로 변환할 수 있는 숫자 식 또는 문자열이어야 합니다.

VBA는 더하기 연산자를 사용하는 식에 대해 수행하는 것과 동일한 곱셈 식 결과의 데이터 형식을 결정하는 규칙을 따릅니다. 곱셈 표현식에서 날짜 값을 포함하는 모든 Variant 변수는 숫자 값으로 변환됩니다.

나눗셈 연산자(/)

부동 소수점 나누기 연산자는 피연산자의 일반적인 산술 나누기를 수행합니다.

나눗셈 식에서 첫 번째 피연산자는 두 번째 피연산자로 나뉩니다. 나눗셈의 결과는 몫입니다.

부동 소수점 나누기 식의 두 피연산자는 VBA에서 숫자로 변환할 수 있는 숫자 식 또는 문자열이어야 합니다.

나눗셈 식에서 하나 이상의 피연산자가 Null 유형이면 나눗셈의 결과도 Null이 됩니다.

부동 소수점 나누기 연산의 데이터 유형은 다음을 제외하고 Double입니다.

  • 나누기 식의 두 피연산자는 모두 Integer 또는 Single 유형이며 결과는 Single입니다.
  • 표현식의 결과가 Single 유형의 값 범위를 넘지 않는 경우.

정수 나누기(\)

정수 나누기는 결과가 항상 소수 부분이 없는 정수라는 점에서 부동 소수점 나누기와 다릅니다.

정수 나누기 식의 두 피연산자는 VBA에서 숫자로 변환할 수 있는 숫자 식 또는 문자열이어야 합니다.

정수 나누기 연산을 수행하기 전에 VBA는 각 피연산자를 Integer 또는 Long 유형(정수 나누기의 결과와 동일한 유형)의 숫자로 반올림합니다.

VBA는 정수 나누기 식 결과의 분수 나머지를 버립니다(반올림하지 않습니다!). 예를 들어, 표현식 22\5 및 24\5는 동일한 결과 = 4를 갖습니다.

정수 나누기 식에서 하나 이상의 피연산자가 Null 유형이면 나누기 결과도 Null입니다.

모듈로 부문(Mod)

모듈로 나누기는 정수 나누기를 보완합니다. 모듈로 나누기에서 표현식은 나누기 연산의 나머지만 정수로 반환합니다.
22 모드 5 = 2
24 모드 5 = 4
25 모드 5 = 0

모듈로 나누기의 나머지 속성은 정수 나누기와 동일합니다.

지수(^)

지수 연산자는 숫자를 거듭제곱합니다.



지수 표현식의 두 연산자는 VBA가 숫자로 변환할 수 있는 숫자 표현식 또는 문자열이어야 합니다.

지수 연산자의 왼쪽에 있는 피연산자는 오른쪽에 있는 피연산자가 정수인 경우에만 음수가 될 수 있습니다.

표현식의 결과는 Double 유형입니다.

표현식에서 하나 이상의 피연산자가 Null 유형이면 지수화 결과도 Null이 됩니다.


위의 내용을 요약해 보겠습니다.