반응형

Range 22

날짜 변환 - DateValue 함수, 선택하여 붙여넣기 VBA(2)

1편은 날짜를 변환할 열에 데이터가 연속적으로 있다고 가정하고 만든 것인데, 날짜가 중간에 비어 있다면 End(xlDown)했을 때 데이터가 있는 마지막 행으로 이동하는 것이라 데이터가 없는 중간에 멈추게 됩니다. 아래와 같이 A6셀에 데이터가 없을 경우 날짜변환 매크로를 실행하면 A6셀 전까지만 날짜변환이 처리됩니다. 1. 원인 분석 1 첫 번째 If문에 중단점을 설정한 후 실행하고 A열을 선택한 후 확인 버튼을 누르 If문에서 실행이 멈추게 되는데 F8을 눌러 한 단계씩 실행하면 직접 실행 창에 물음표 다음에 col_num(1, 1).End(xlDown).Row을 붙여 넣고 엔터키를 누르면 2가 표시되고, 물음표 다음에 Cells(Rows.Count, col_num.Column).End(xlUp).R..

EXCEL - VBA 2023.02.17

CurrentRegion 속성을 이용한 합계 등 계산(2)

1편에서는 표로 만들었는데, 입력하지 않은 주변 셀까지 수식이 자동으로 입력되어 범위로 변경하였습니다. 이전 편에서는 과목별 합계 등을 구해봤는데, 이번에는 성명을 기준으로 한 합계 등을 구해보겠습니다. 다른 점은 과목별 합계를 구할 때는 Sum 등이 아래에 있어서 4개를 뺄 수 있었는데, 성명별 합계를 구할 때는 처음에는 없다가 VBA를 실행하면 추가되기 때문에 두 가지 요소를 고려해서 매크로를 작성해야 한다는 것입니다. 또한 합계 등을 구할 때 행 별로 합계를 구해야 하고, 행을 내려가면서 합계 수식을 반복하는데 Sum이전의 end_row_of_calc(계산할 마지막 행) 까지만 실행해야 합니다. 1. 코드 작성 가. 계산할 마지막 열 구하기 Sum 등이 있을 경우와 없을 경우 end_col_of_c..

EXCEL - VBA 2023.02.06

CurrentRegion 속성을 이용한 합계 등 계산(1)

1. CurrentRegion의 주소 체계 A2셀을 기준으로 한 CurrentRegion은 전체 시트의 시각에서 보면 A2셀부터 E15셀까지이지만, CurrentRegion의 입장에서 보면 현재 영역의 왼쪽 위가 A1셀, 다시 말해 행이 1, 열이 1인 셀부터 행이 14, 열이 5인 E14셀까지로 새로운 주소 체계를 갖고 있습니다., 셀 주소는 A1 참조 스타일로 보면 위와 같이 A2, E15식으로 표시하지만, 파일 - 옵션 - 수식 탭에서 'R1C1 참조 스타일'의 왼쪽에 체크하고 확인 버튼을 누르면 열을 표시하는 기호가 알파벳이 아니라 숫자로 바뀌며, D14셀의 주소가 R10C4로 바뀝니다. R10C4란 10행 4열이란 의미로서 A1 참조 스타일의 경우와 달리 행이 먼저 표기됩니다. 2. Curren..

EXCEL - VBA 2023.02.03

CurrentRegion의 속성 알아보기

1. CurrentRegion의 주소 확인하기 CurrentRegion(현재 영역)의 설정 범위를 알아보기 위해 VB Editor를 실행한 후 코드를 작성해 보겠습니다. 가. 코드 작성 모듈을 삽입한 다음 아래와 같이 코드를 작성합니다. Sub cur_range_addr() Dim cur_range As Range Set cur_range = Range("a2").CurrentRegion MsgBox cur_range.Address End Sub 나. 코드 설명 Dim cur_range As Range : 현재 영역을 저장하기 위한 변수 cur_range를 Range(범위) 형식으로 선언합니다. Set cur_range = Range("a2").CurrentRegion : - 일반적인 변수는 cur_ra..

EXCEL - VBA 2023.01.30

구구단 만들기(3) (엑셀 VBA 프로그래밍 기초)

프로그램을 짜는 것은 논리(로직)만 만들어지면, 그다음은 그것을 해당 언어의 문법에 맞게 구성해 나가면 됩니다. ​ 구구단 어릴 적 많이 외웠던 것인데, 프로그램으로 만들어보면 기초 쌓는데 도움이 될 듯하여 골랐습니다. 만들 모양은 아래와 같습니다. 매크로 기록하기에서는 2단, 3단 등 단수 제목을 복잡해서 뺐는데, 프로그램을 짤 때는 그렇게 어렵지 않아 넣었습니다. [프로그램 로직] ​ ① A1에 '구 구 단'이라고 입력하고, A1에서 W1까지 범위를 '병합하고 가운데 정렬'한 후, 글자크기를 16, 굵게로 설정합니다. ​ ② A3에 '2 단'이라 입력하고, A3에서 E3까지 병합하고 가운데 정렬한 후, 글자를 굵게 합니다. ​ ③ 2단은 A4부터 E12까지 입력하는데, A열은 모두 2이고, B열은 *..

EXCEL - VBA 2022.12.12

For ~ Next 반복문

동일한 작업을 반복해서 실행하는 것이 반복문입니다. For문은 For ~ Next문과 For Each ~ Next문이 있습니다. 먼저 For ~ Next문에 대해 다루고, For Each ~ Next문은 따로 다루도록 하겠습니다. 1. 구문 2. 구문에 대한 설명 counter 필수 요소. 숫자 변수로서 For 루프의 컨트롤 변수. start 필수 요소. counter의 초기 값. end 필수 요소. counter의 최종 값. step 선택 사항. For 루프를 돌 때 매번 변화되는 카운터의 양. 기본값은 1 statements 선택 사항. For와 Next사이에서 지정된 숫자만큼 반복 실행하는 하나이상의 문장 Exit For 선택 사항. For 루프의 밖으로 제어를 이동. Next 필수 요소. For ..

EXCEL - VBA 2022.11.11

엑셀 VBA에서 셀 또는 범위 지정하기(3) - 여러 셀 또는 떨어진 셀

3. 여러 셀 지정하기 가. Range 이용하기 SUM 함수를 이용할 때처럼 Range 안에 셀 주소를 입력하여 범위를 지정할 수 있습니다. 연속된 범위는 :(콜론)을 사용하고 떨어진 범위는 ,(콤마)를 사용합니다. (1) 연속된 범위 지정 개발도구 - Visual Basic 명령을 눌러 Visual Basic Editor를 실행한 다음 모듈을 삽입하고, 오른쪽 코드 창에 아래 코드를 입력합니다. Sub 연속범위지정() Range("a1:a3").Select End Sub 그리고, 삼각형 모양의 아이콘을 누르거나, F5키를 눌러 실행하고, 엑셀 모양 아이콘을 눌러 엑셀로 돌아가 A1셀에서 A3셀까지 선택됩니다. 값을 입력하려면 지정된 범위 = 값 이라고 입력하면 됩니다. Sub 연속범위지정() Range..

EXCEL - VBA 2022.11.03

엑셀 VBA에서 셀 또는 범위 지정하기(1) - Range

엑셀은 셀은 기준으로 작업을 하게 됩니다. A1셀에 24를 입력하거나, B1셀에 A1에 2를 곱한 값을 입력하거나 모두 셀을 기준으로 작업을 하게 됩니다. 1. 준비 사항 새 통합 문서를 연 다음 개발도구 - Visual Basic 명령을 눌러 Visual Basic Editor를 연 다음 삽입 - 모듈 메뉴 또는 삽입 콤보 박스를 누른 다음 모듈을 클릭하여 모듈을 추가하면 그 아래 Module1이 있고, 오른쪽을 보면 빈 코드 창이 열립니다. 오른쪽 코드 창에 sub 범위지정까지 입력하면 그다음 괄호와 End Sub는 자동으로 입력됩니다. 단일 셀 또는 여러 셀을 다루는 방법을 알라보는데, 여러 셀을 연속되거나 연속되지 않을 경우를 나눠서 다뤄보겠습니다. 2. 단일 셀 지정하기 셀을 지정할 때는 Ran..

EXCEL - VBA 2022.10.25

범위 등을 입력받는 Application.InputBox 메소드(2)

1편에서 범위를 다뤘는데, Microsoft 도움말에 있는 예제를 하나 더 알아보겠습니다. 1. 3개 셀 선택 Sub Cbm_Value_Select() 'Set up the variables. Dim rng As Range 'Use the InputBox dialog to set the range for MyFunction, with some simple error handling. Set rng = Application.InputBox("Range:", Type:=8) If rng.Cells.Count 3 Then MsgBox "Length, width and height are needed -" & _ vbLf & "please select three cells!" Exit Sub End If 'Ca..

EXCEL - VBA 2022.10.21

범위 등을 입력받는 Application.InputBox 메소드(1)

아래 글에서 정해진 범위를 복사해서 정해진 영역에 붙여 넣는 매크로를 다뤄봤는데, https://lsw3210.tistory.com/m/163 아래와 같이 A1셀부터 A5셀까지 데이터가 있는데, B1셀에 붙여 넣으려면 위 글에 의한 방식으로 하면 Range("A1:A5").Copy Destination:=Range("B1")이라고 모듈 1에 작성하면 됩니다. 모듈을 작성하려면 개발도구 - Visual Basic 명령을 누른 다음 Visual Basic Editor에서 삽입 - 모듈 메뉴를 눌러 모듈을 추가한 다음 코드 창에 아래와 같이 입력하고 Sub 복붙1() Range("A1:A5").Copy Destination:=Range("B1") End Sub 복붙1이라는 sub 프로시저 안에 커서를 넣은 다..

EXCEL - VBA 2022.10.20
반응형