ReDim 문(Visual Basic)ReDim Statement (Visual Basic)

배열 변수의 스토리지 공간을 다시 할당합니다.Reallocates storage space for an array variable.

구문Syntax

ReDim [ Preserve ] name(boundlist) [ ,  name(boundlist) [, ... ] ]  

요소Parts

용어Term 정의Definition
Preserve (선택 사항)Optional. 마지막 차원의 크기만 변경한 경우 기존 배열의 데이터를 유지하기 위해 사용되는 한정자입니다.Modifier used to preserve the data in the existing array when you change the size of only the last dimension.
name 필수입니다.Required. 배열 변수의 이름입니다.Name of the array variable. Declared Element Names을 참조하세요.See Declared Element Names.
boundlist 필수입니다.Required. 다시 정의된 배열의 각 차원에 대한 범위 목록입니다.List of bounds of each dimension of the redefined array.

주의Remarks

ReDim 문을 사용하여 이미 선언된 배열의 차원 중 하나 이상의 크기를 변경할 수 있습니다.You can use the ReDim statement to change the size of one or more dimensions of an array that has already been declared. 큰 배열이 있고 요소가 더 이상 필요하지 않은 경우 ReDim은 배열 크기를 줄여서 메모리를 확보할 수 있습니다.If you have a large array and you no longer need some of its elements, ReDim can free up memory by reducing the array size. 반면에 배열에 요소가 더 필요한 경우 ReDim은 요소를 추가할 수 있습니다.On the other hand, if your array needs more elements, ReDim can add them.

ReDim 문은 배열에만 사용할 수 있으며The ReDim statement is intended only for arrays. 스칼라(단일 값만 포함된 변수), 컬렉션 또는 구조체에서는 유효하지 않습니다.It's not valid on scalars (variables that contain only a single value), collections, or structures. 변수를 Array 형식으로 선언하는 경우 ReDim 문에는 새 배열을 만들 수 있는 충분한 형식 정보가 없습니다.Note that if you declare a variable to be of type Array, the ReDim statement doesn't have sufficient type information to create the new array.

ReDim 은 프로시저 수준에서만 사용할 수 있습니다.You can use ReDim only at procedure level. 따라서 변수의 선언 컨텍스트는 프로시저여야 하며, 소스 파일, 네임스페이스, 인터페이스, 클래스, 구조체, 모듈 또는 블록일 수 없습니다.Therefore, the declaration context for the variable must be a procedure; it can't be a source file, a namespace, an interface, a class, a structure, a module, or a block. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.For more information, see Declaration Contexts and Default Access Levels.

규칙Rules

  • 여러 변수.Multiple Variables. 동일한 선언문에서 여러 배열 변수의 크기를 조정 하 고 각 변수에 대 한 nameboundlist 부분을 지정할 수 있습니다.You can resize several array variables in the same declaration statement and specify the name and boundlist parts for each variable. 여러 변수는 쉼표로 구분됩니다.Multiple variables are separated by commas.

  • 배열 범위입니다.Array Bounds. boundlist의 각 항목은 해당 차원의 하 한과 상한을 지정할 수 있습니다.Each entry in boundlist can specify the lower and upper bounds of that dimension. 하한은 항상 0(영)입니다.The lower bound is always 0 (zero). 상한은 해당 차원에 가능한 최대 인덱스 값이며 차원의 길이(상한에 1을 더한 값)는 아닙니다.The upper bound is the highest possible index value for that dimension, not the length of the dimension (which is the upper bound plus one). 각 차원의 인덱스는 0부터 상한 값까지 다양할 수 있습니다.The index for each dimension can vary from 0 through its upper bound value.

    boundlist의 차원 수는 배열의 원래 차원 수(차수)와 일치해야 합니다.The number of dimensions in boundlist must match the original number of dimensions (rank) of the array.

  • 데이터 형식.Data Types. ReDim 문은 배열 변수 또는 해당 요소의 데이터 형식을 변경할 수 없습니다.The ReDim statement cannot change the data type of an array variable or its elements.

  • 초기.Initialization. ReDim 문은 배열 요소에 대해 새 초기화 값을 제공할 수 없습니다.The ReDim statement cannot provide new initialization values for the array elements.

  • 배열.Rank. ReDim 문은 배열의 차수 (차원 수)를 변경할 수 없습니다.The ReDim statement cannot change the rank (the number of dimensions) of the array.

  • Preserve를 사용 하 여 크기 조정.Resizing with Preserve. Preserve사용 하는 경우 배열의 마지막 차원만 크기를 조정할 수 있습니다.If you use Preserve, you can resize only the last dimension of the array. 다른 모든 차원의 경우에는 기존 배열의 범위를 지정해야 합니다.For every other dimension, you must specify the bound of the existing array.

    예를 들어 배열에 차원이 하나만 있는 경우 해당 차원의 크기를 조정해도 배열의 모든 내용을 보존할 수 있습니다. 마지막이자 유일한 차원을 변경하기 때문입니다.For example, if your array has only one dimension, you can resize that dimension and still preserve all the contents of the array, because you are changing the last and only dimension. 그러나 배열에 둘 이상의 차원이 있는 경우에는 Preserve를 사용하여 마지막 차원의 크기만 변경할 수 있습니다.However, if your array has two or more dimensions, you can change the size of only the last dimension if you use Preserve.

  • 정보의.Properties. 값의 배열을 포함 하는 속성에 ReDim를 사용할 수 있습니다.You can use ReDim on a property that holds an array of values.

동작Behavior

  • 배열 바꾸기.Array Replacement. ReDim 기존 배열을 해제 하 고 동일한 순위로 새 배열을 만듭니다.ReDim releases the existing array and creates a new array with the same rank. 새 배열은 배열 변수에서 해제된 배열을 대체합니다.The new array replaces the released array in the array variable.

  • 을 유지 하지 않고 초기화 합니다.Initialization without Preserve. Preserve지정 하지 않으면 해당 데이터 형식에 대 한 기본값을 사용 하 여 새 배열의 요소를 초기화 ReDim.If you do not specify Preserve, ReDim initializes the elements of the new array by using the default value for their data type.

  • Preserve를 사용 하 여 초기화 합니다.Initialization with Preserve. Preserve지정 하는 경우 Visual Basic 기존 배열의 요소를 새 배열에 복사 합니다.If you specify Preserve, Visual Basic copies the elements from the existing array to the new array.

예제Example

다음 예제에서는 배열의 기존 데이터를 손실하지 않고 동적 배열의 마지막 차원 크기를 늘린 다음 데이터를 부분적으로 손실하며 크기를 줄입니다.The following example increases the size of the last dimension of a dynamic array without losing any existing data in the array, and then decreases the size with partial data loss. 마지막으로 크기를 원래 값으로 다시 줄이고 모든 배열 요소를 다시 초기화합니다.Finally, it decreases the size back to its original value and reinitializes all the array elements.

Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)

Dim 문은 차원이 세 개인 새 배열을 만듭니다.The Dim statement creates a new array with three dimensions. 각 차원은 범위 10으로 선언되므로 각 차원의 배열 인덱스는 0에서 10까지의 범위일 수 있습니다.Each dimension is declared with a bound of 10, so the array index for each dimension can range from 0 through 10. 다음 설명에서는 세 개의 차원이 계층, 행 및 열로 지칭됩니다.In the following discussion, the three dimensions are referred to as layer, row, and column.

첫 번째 ReDimintArray 변수의 기존 배열을 대체하는 새 배열을 만듭니다.The first ReDim creates a new array which replaces the existing array in variable intArray. ReDim 기존 배열의 모든 요소를 새 배열에 복사 합니다.ReDim copies all the elements from the existing array into the new array. 또한 모든 계층에 있는 각 행의 끝에 열 10개를 더 추가하고 이러한 새 열의 요소를 0(배열의 요소 형식인 Integer의 기본값)으로 초기화합니다.It also adds 10 more columns to the end of every row in every layer and initializes the elements in these new columns to 0 (the default value of Integer, which is the element type of the array).

두 번째 ReDim은 새 배열을 하나 더 만들고 적합한 모든 요소를 복사합니다.The second ReDim creates another new array and copies all the elements that fit. 그러나 5개의 열이 각 계층에 있는 각 행의 끝에서 손실됩니다.However, five columns are lost from the end of every row in every layer. 이는 해당 열의 사용을 마친 경우 문제가 되지 않습니다.This is not a problem if you have finished using these columns. 큰 배열의 크기를 줄이면 더 이상 필요하지 않은 메모리를 확보할 수 있습니다.Reducing the size of a large array can free up memory that you no longer need.

세 번째 ReDim은 새 배열을 하나 더 만들고 각 계층에 있는 각 행의 끝에서 5개의 열을 제거합니다.The third ReDim creates another new array and removes another five columns from the end of every row in every layer. 이번에는 기존 요소를 복사하지 않습니다.This time it does not copy any existing elements. 이 문은 배열을 원래 크기로 되돌립니다.This statement reverts the array to its original size. 이 문은 Preserve 한정자를 포함하지 않기 때문에 모든 배열 요소를 원래 기본값으로 설정합니다.Because the statement doesn't include the Preserve modifier, it sets all array elements to their original default values.

추가 예제는 배열을 참조 하세요.For additional examples, see Arrays.

참고 항목See also