에너지 관점 스터디:에관스

컴활 1급 · 컴활 1급 실전 판단

컴활 1급 Column 속성 0부터 BoundColumn 차이: 같은 열 번호가 하나 다른 이유

두음 암기는 `열영·바일`입니다. 재미있게는 `열차는 영번, 바운드는 일번`이라고 말하세요. Column 열 번호는 0부터, BoundColumn 저장 열 번호는 1부터 시작합니다.

가장 중요한 대응은 한 줄입니다. 콤보 상자의 첫 번째 열은 `Column(0)`으로 읽고, 그 첫 번째 열을 컨트롤 값으로 저장하려면 `BoundColumn = 1`로 지정합니다. 같은 물리 열인데 속성마다 시작 번호가 달라 숫자가 하나 차이 납니다.

이 글은 이 번호 차이만 정확히 고정합니다. `BoundColumn = 0`은 첫 번째 열을 뜻하지 않고 선택 행의 ListIndex 값을 저장한다는 예외, 너비가 0인 숨긴 열도 열 순서에 포함된다는 함정까지 함께 확인합니다.

컴활 1급 Access Column 속성은 0부터, BoundColumn은 1부터 세는 대응과 BoundColumn 0 예외를 정리한 모바일 인포그래픽
첫 번째 열은 Column(0)과 BoundColumn 1로 대응하고, BoundColumn 0은 선택 행의 ListIndex 값이라는 예외를 분리합니다.
작성에관스 컴활 1급 학습팀 발행2026년 8월 17일 수정2026년 8월 17일 주제컴활 1급 실전 판단

핵심 포인트

이 글에서 먼저 챙길 것

  • Column(Index)는 첫 번째 열을 0으로 세므로 첫 열이 Column(0)입니다.
  • BoundColumn은 1부터 실제 열을 지정하므로 첫 열 저장은 BoundColumn 1입니다.
  • 따라서 같은 열의 대응 공식은 Column(n) = BoundColumn n+1입니다.
  • BoundColumn 0은 첫 열이 아니라 선택된 행의 ListIndex 값을 저장합니다.
  • ColumnWidths가 0인 숨긴 열도 없어지는 것이 아니므로 번호 계산에 포함됩니다.
  • ColumnCount가 N이면 유효한 Column 인덱스는 0부터 N-1까지입니다.

본문

컴활 1급 공부 기준을 더 구체적으로 보기

10초 결론: Column(n)과 BoundColumn은 하나 차이입니다

첫 번째 열은 Column(0)이면서 BoundColumn 1, 두 번째 열은 Column(1)이면서 BoundColumn 2, 세 번째 열은 Column(2)이면서 BoundColumn 3입니다. Column은 0 기반, BoundColumn의 실제 열 지정은 1 기반입니다.

시험장에서 같은 열을 맞춰야 한다면 `Column 번호 + 1 = BoundColumn 번호`라고 적으면 됩니다. 반대로 BoundColumn 번호가 주어졌다면 1을 빼야 같은 열의 Column 인덱스가 됩니다.

두음 암기: 열영·바일

`열영`은 Column 열 번호가 0부터 시작한다는 뜻이고, `바일`은 BoundColumn의 실제 열 번호가 1부터 시작한다는 뜻입니다. `열차는 영번, 바운드는 일번`처럼 소리 내면 시작 번호가 붙습니다.

단, 이 암기는 BoundColumn이 1 이상일 때 실제 열을 지정하는 규칙입니다. BoundColumn 0은 별도 예외이므로 `바영은 행`이라는 짧은 꼬리표를 더하세요. BoundColumn 0은 열이 아니라 선택 행의 ListIndex 값입니다.

같은 물리 열을 대응표로 확인하세요

첫 번째 물리 열: Column(0) = BoundColumn 1. 두 번째 물리 열: Column(1) = BoundColumn 2. 세 번째 물리 열: Column(2) = BoundColumn 3입니다.

문제에서 `두 번째 열의 값을 읽는다`면 Column(1)을, `두 번째 열을 컨트롤 값으로 저장한다`면 BoundColumn 2를 고릅니다. 열의 위치는 같아도 읽기와 저장 목적, 시작 번호가 다릅니다.

Column 속성은 지정한 열의 값을 읽습니다

Microsoft Access의 ComboBox.Column 속성은 목록에서 특정 열이나 행의 값을 참조할 때 사용합니다. 열 인덱스는 0부터 시작하므로 Column(0)이 첫 번째 열입니다.

현재 선택 행에서 두 번째 열 값을 읽는 표현은 `Me.cboDepartment.Column(1)`처럼 생각할 수 있습니다. 열이 세 개라면 Column(0), Column(1), Column(2)까지가 유효한 범위입니다.

BoundColumn은 컨트롤 값으로 묶을 열을 정합니다

BoundColumn은 여러 열 가운데 어느 열의 값을 콤보 상자나 목록 상자의 값으로 사용할지 정합니다. 실제 열을 지정할 때는 1부터 세므로 BoundColumn 1이 첫 번째 열입니다.

예를 들어 첫 열에 부서코드, 둘째 열에 부서명이 있다면 BoundColumn 1은 부서코드를 저장하고 BoundColumn 2는 부서명을 저장합니다. 화면에 무엇이 먼저 보이는지와 저장되는 값은 따로 확인해야 합니다.

BoundColumn 0은 첫 번째 열이 아닙니다

가장 자주 걸리는 함정은 0을 보자마자 첫 번째 열로 해석하는 것입니다. BoundColumn 0은 첫 번째 열이 아니라 선택한 행의 ListIndex 값을 컨트롤 값으로 사용합니다.

ListIndex는 첫 행이 0, 둘째 행이 1인 0 기반 행 위치입니다. 따라서 BoundColumn 0은 Column(0)과 같지 않습니다. 하나는 선택 행 위치, 다른 하나는 첫 번째 열 값입니다.

숨긴 열도 열 번호에서는 사라지지 않습니다

ColumnWidths에서 어떤 열의 너비를 0으로 설정하면 화면에서는 보이지 않지만 열 자체가 삭제되는 것은 아닙니다. 숨긴 첫 열은 여전히 Column(0)이자 BoundColumn 1에 해당합니다.

예를 들어 `0cm;4cm`처럼 첫 열을 숨기고 둘째 열만 보이게 해도, 첫 열의 코드 값을 BoundColumn 1로 저장할 수 있습니다. `보이는 첫 열`과 `데이터의 첫 열`을 구분해야 합니다.

ListIndex는 행, Column은 열입니다

ListIndex와 Column은 둘 다 0부터 시작해 더 쉽게 섞입니다. ListIndex는 선택된 행의 위치이고, Column은 가로 방향의 열 위치입니다.

`ListIndex = 2`는 세 번째 행을 뜻하고 `Column(2)`는 세 번째 열을 뜻합니다. 숫자가 같아도 축이 다르므로 문제 문장에서 행인지 열인지 먼저 표시하세요.

ColumnCount가 N이면 마지막 인덱스는 N-1입니다

ColumnCount는 목록에 포함된 전체 열 수입니다. 열이 세 개라면 ColumnCount는 3이지만 Column 속성으로 접근할 수 있는 마지막 열 인덱스는 2입니다.

따라서 반복문은 `0 To ColumnCount - 1` 형태가 됩니다. ColumnCount와 마지막 Column 인덱스를 같은 숫자로 놓는 선지는 범위를 하나 초과하므로 틀립니다.

코드 한 묶음으로 번호 차이를 고정하세요

`Me.cboDepartment.Column(0)`은 첫 번째 열 값을 읽고, `Me.cboDepartment.Column(1)`은 두 번째 열 값을 읽습니다. 같은 콤보 상자에서 `Me.cboDepartment.BoundColumn = 1`은 첫 번째 열을 컨트롤 값으로 사용합니다.

두 번째 열 값을 저장하려면 BoundColumn 2입니다. 코드에서 Column(1)과 BoundColumn 1이 나란히 보여도 같은 열이라고 판단하면 안 됩니다. Column(1)은 둘째 열, BoundColumn 1은 첫째 열입니다.

실무형 예시: 코드는 숨기고 이름만 보여 주는 콤보 상자

목록의 첫 열에 `D01` 같은 부서코드, 둘째 열에 `영업부` 같은 부서명이 있다고 가정합니다. 첫 열 너비를 0으로 숨기면 사용자는 부서명만 보지만 데이터의 첫 열은 그대로 남습니다.

이때 BoundColumn 1을 사용하면 화면에는 영업부가 보여도 실제 컨트롤 값은 D01이 됩니다. 코드 값을 직접 읽을 때는 Column(0), 이름을 읽을 때는 Column(1)을 사용합니다.

선지에서 동사를 먼저 보면 속성이 갈립니다

`읽는다·참조한다`가 핵심이면 Column 속성을 먼저 떠올리고, `컨트롤 값으로 사용한다·저장한다·바인딩한다`가 핵심이면 BoundColumn을 먼저 떠올립니다.

`현재 선택된 행의 위치`라면 ListIndex, `전체 열의 수`라면 ColumnCount입니다. 속성 이름을 외우기 전에 문장의 동사와 대상 축을 찾으면 긴 선지도 빠르게 줄일 수 있습니다.

문제 풀이 순서는 행열·목적·시작·숨김입니다

1단계 `행열`: 묻는 값이 행 위치인지 열 위치인지 표시합니다. 2단계 `목적`: 열 값을 읽는지, 컨트롤에 저장할 열을 정하는지 구분합니다.

3단계 `시작`: Column은 0, BoundColumn의 실제 열은 1에서 시작합니다. 4단계 `숨김`: 너비가 0인 열도 데이터 순서에 포함되는지 확인합니다.

자주 틀리는 오답 네 가지

첫째, Column(1)을 첫 번째 열이라고 고르면 틀립니다. 둘째, BoundColumn 0을 첫 번째 열이라고 해석하면 틀립니다. 셋째, 숨긴 열은 번호에서 제외된다고 보면 틀립니다.

넷째, ColumnCount가 3일 때 Column(3)이 마지막 열이라고 고르면 틀립니다. 0 기반 인덱스의 마지막은 2이므로 항상 전체 개수에서 1을 빼야 합니다.

30초 변환 연습

질문 1. Column(0)과 같은 첫 번째 열을 저장하는 BoundColumn 번호는? 정답은 1입니다. 질문 2. BoundColumn 3과 같은 열을 읽는 Column 번호는? 정답은 Column(2)입니다.

질문 3. BoundColumn 0은 무엇을 저장하나요? 정답은 선택 행의 ListIndex 값입니다. 질문 4. 첫 열을 숨기면 Column(0)이 없어지나요? 정답은 아니며 열 순서는 유지됩니다.

시험 직전 다섯 줄

1. 열영·바일: Column 0, BoundColumn 1. 2. 같은 열 공식은 Column(n) = BoundColumn n+1. 3. BoundColumn 0은 ListIndex 값입니다.

4. 너비 0인 숨긴 열도 번호에 포함됩니다. 5. ColumnCount가 N이면 Column의 마지막 인덱스는 N-1입니다.

공식 문서로 재확인한 범위

Microsoft Learn의 ComboBox.BoundColumn 문서는 BoundColumn 0일 때 ListIndex 값을 사용하고, 1 이상에서는 1부터 세는 열 값을 사용한다고 설명합니다. 또한 Column 속성은 0 기반이므로 BoundColumn 1이 Column(0)에 대응한다고 명시합니다.

ComboBox.ListIndex와 ColumnCount·ColumnWidths 문서도 첫 행의 ListIndex가 0이고, 열 반복 범위가 0부터 ColumnCount-1이며, 너비 0 설정은 열을 숨길 뿐이라는 판단 근거로 함께 확인했습니다.

FAQ

자주 묻는 질문

Column(0)과 BoundColumn 1은 같은 열인가요?

네. 둘 다 목록의 첫 번째 물리 열을 가리킵니다. 다만 Column(0)은 그 열 값을 읽는 0 기반 참조이고, BoundColumn 1은 그 열을 컨트롤 값으로 사용하는 1 기반 설정입니다.

BoundColumn 0은 첫 번째 열을 뜻하나요?

아닙니다. BoundColumn 0은 선택된 행의 ListIndex 값을 컨트롤 값으로 사용합니다. 첫 번째 실제 열을 저장하려면 BoundColumn 1입니다.

ColumnWidths로 첫 열을 숨기면 열 번호가 바뀌나요?

바뀌지 않습니다. 너비 0은 열을 보이지 않게 할 뿐 데이터 열 순서를 없애지 않습니다. 숨긴 첫 열도 Column(0), BoundColumn 1로 계속 참조합니다.

ColumnCount가 4라면 마지막 Column 번호는 몇인가요?

Column 인덱스는 0부터 시작하므로 마지막은 Column(3)입니다. 유효 범위는 0부터 ColumnCount-1까지입니다.