전체글 1142

부부직원이면 빨간색으로 표시하기

VBA 의뢰하는 것이 생각보다 고가임을 알고는 이제 섣불리 답을 달지 못하겠다. 해서, 질문이 올라오면 혼자 코드를 짜고 이곳에 올리고, 의뢰를 유도해야겠다. 돈도다는 다른 개발자들을 위함이니. 부부직원 시트를 참고하여 부부직원이 한 부서에 발령받으면 빨간색으로 표시하는 매크로이다. 대상자와 전입자를 배열에 넣고 부부직원을 다른 배열에 넣어서 For Each 구문을 이용하여 셀을 이동하며 인사시트와 부부직원 시트를 비교하도록 코드를 짰다. Union 의 사용법을 이번에 알아봤고(떨어져있는 범위를 선택할 때 매우 편함) For Next 구문보다 For Each의 힘을 알아봤던 이번 작업. Option ExplicitSub sbBubu() Dim wsInsa As Worksheet, wsBubu As Wor..

VB(A) 2015.03.01

VBA 첫 알바

금액은 얼마 안 되지만 최초의 VBA 코딩 알바. 한 일에 비해 적은 금액이긴 하다. 하지만 많이 배움. 코드가 길다. 상품정리 시트를 기준으로 변환1, 변환2, 변환3 파일을 만드는 작업. 각 파일마다 특징이 있다. 1. 변환1에서는 색상과 사이즈가 한셀에 콤마를 기준으로 나열되어 있다. 이것을 임시셀을 삽입해서 임시셀에 색상과 사이즈를 텍스트나누기를 한 내용을 넣고 작업을 한 후에 임시셀을 삭제하는 것이 포인트. 2. 변환2에서는 상품명을 기반으로 첫 자음을 표기하는 것이 포인트. 상품명이 도트슬립일 때 ㄷ. 로 표기하는 것이 관건인데, 문제는 알파벳이 있다는 것이다. TOM 이라는 상품이 있으면 ㅌ. 라고 표기하는 것. 엑셀은 알파벳과 한글의 발음을 매치시키지 못하기때문에 Select Case 구문..

VB(A) 2015.03.01

폴더 선택하여 텍스트파일 한줄로 가져오기

폴더를 선택하면 폴더 안에 있는 텍스트 파일을 모조리 불러오는 방식이다. 배열을 이용하여 속도향상에 중점을 두었다. 파일을 많이 불러올 수록 효과가 있는 코드. 이로서 밀린 매크로 작업 완료. Option ExplicitSub impLongTxt() Dim rngImport As Range Dim strPath As String Dim fileName As Variant Dim i As Long, j As Integer Dim varTemp() As String '작업속도 상승 With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual '기존자료 삭제 With Sheets(2) .Selec..

VB(A) 2015.02.25

일부 시트들을 새 파일로 저장

기존에 이해하기로는 한 시트당 한 파일로 저장하는 걸로 들었는데 그게 아니라 일부 시트들을 한 파일로 저장하는 내용이었다. array로만 해결하려고 머리 싸매다가 해외 사례에서 의외로 쉽게 해결. 원래 저게 내가 하고 싶던 거였는데 ㅋ 이번 작업의 핵심은 inputbox를 이용하여 시트값을 받은 후 split으로 분리하고 val 함수를 이용하여 string 값을 integer 값으로 변환해주는 것 Sub mkFile() Dim inTemp As String Dim vrTemp As Variant Dim oldBook As Workbook Dim newBook As Workbook Dim i As Integer '처리 속도 높이기 With Application .Calculation = xlCalculat..

VB(A) 2015.02.23

이름을 자음 모음으로 분리하기

이름을 받고, 열번호를 받아서 그에 맞는 숫자를 입력하는 매크로 자음, 모음만 분리하면 어렵지 않은 문제다. 게다가 자음, 모음 분리하는 매크로가 인터넷에 있어서 쉽게 푼 문제. Function fnName(num As Integer, inName As String) Dim 초성 As Variant, 중성 As Variant, 종성 As Variant Dim vR() As Variant Dim i As Integer, j As Integer, n As Long, k1 As Integer, k2 As Integer, k3 As Integer Dim endJoin As String Dim rngName As Range 초성 = Array("ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ",..

VB(A) 2015.02.22

시트별로 파일 저장

시트명으로 파일을 저장하는 매크로. 뭔가 아쉽지만 일단 업로드. Option Explicit Sub mkFile() Dim strPath As String Dim strFile As String Dim i As Integer '저장경로를 현재 엑셀파일과 동일경로로 설정 strPath = ThisWorkbook.Path & "\" '시트1부터 시트 개수만큼 파일로 저장 For i = 1 To Sheets.Count strFile = Sheets(i).Name & ".xlsx" '시트명을 파일명으로 설정 Sheets(i).Copy '시트 복사 With ActiveWorkbook .SaveAs Filename:=strPath & strFile '현재 엑셀파일경로에 시트명으로 파일 저장 .Close '저장 후 ..

VB(A) 2015.02.21

Collection 객체를 활용하여 중복값 찾기

중복값을 다 나열하여 RemoveDuplicates로 중복값을 지우는 코드를 썼다가 카페의 Chronicle 님이 Collection 개체로 중복값을 찾는 방식을 알려줘서 그에 맞춰서 나도 다시 짜봤다. 중복값이 생기면 Collection에 중복값을 쌓아가고 셀에 그 배열들을 뿌리는 방식. 이를테면 공식 같은 거다. Option ExplicitSub dblName() Dim rngName As Range Dim rngCell As Range Dim cltName As New Collection Dim varName As Variant Dim i As Integer '기존항목 제거 후 제목 입력 With Range("C1") .CurrentRegion.ClearContents .Value = "중복이름" ..

VB(A) 2015.02.19