VB(A) 197

차트 생성 후 이미지 저장

하루하나 카페에 올라온 질문글. 학생이 300명 정도 있고 개인별로 차트 생성을 해야한다. 게다가 1인당 생성해야하는 차트는 총 두개. 작업일지는 다음과 같다. 1. 파일을 불러와서 각 시트를 순환하며 작업 2. 시트명이 과목별 시험 성적 또는 과목별 수행 등급일 때만 매크로 실행 3. 이름에 빈칸들이 있어서 밑에서 위로 올라가며 작업 4. 차트 폴더를 생성하고 각 차트들을 이미지로 저장 Option ExplicitSub mkChart() Dim openFiles As Variant, openFile As Variant, xlsFile As String Dim wrkSht As Worksheet Dim rngArea As Range, testArea As Range Dim intR As Integer, ..

VB(A) 2015.03.16

특정글자 색 바꾸기

엑셀에서 ctrl+F로 글자색을 바꾸려 하면 셀 전체의 글자색이 바뀐다. 이 코드는 원하는 글자의 색만 바꿔주는 코드다. Sub chnColor() Dim i As Integer, intT As Integer Dim rngArea As Range, rngCell As Range '글자 영역 설정 및 기존 서식 복귀 Set rngArea = Range("A1", Cells(Rows.Count, "A").End(xlUp)) With rngArea.Offset(, 1).Font .Bold = False .ColorIndex = 1 End With For Each rngCell In rngArea With rngCell '문장을 순환하며 글자색 변경 i = Len(.Value) intT = InStr(.Offs..

VB(A) 2015.03.14

일정 기준으로 텍스트 나누기

지식인에 올라온 글.A열을 C, D, E열로 구분해달라는 내용.기준은 알 것같은데 코드로 짜려니 막상 오래 걸렸다.1. [ 가 나올 때까지 글자를 합쳐서 배열에 넣고2. 한 셀의 작업이 끝나면 C 열부터 붙이기 작업을 하였다. 이 정도면 배열 감각은 익힌 듯 Sub fnDevide() Dim rngArea As Range, rngCell As Range Dim rngPaste As Range Dim vrColor() As String Dim strText As String, strChar As String Dim j As Integer, vr As Integer Dim cntC As Integer With Application .ScreenUpdating = False .EnableEvents = Fal..

VB(A) 2015.03.13

영어 한글 분리하기

지식인에 올라온 질문. 영어와 한글을 분리해달라는 요청. 보통 한 셀에 영어가 한글 앞에 오기때문에 1. do 문을 이용해서 한글이 나올 때까지 한글자씩 합치고 2. 한글은 영어글자수만큼 빼서 영어와 한글을 분리하였다. Sub Macro1() Dim rngArea As Range, rngCell As Range Dim i As Integer Dim strChar As String '기존 항목 삭제 Range("B:B,C:C").ClearContents '영어와 한글 분리할 영역 받기 Set rngArea = Application.InputBox("분리할 셀을 선택하세요", Type:=8) For Each rngCell In rngArea i = 1 strChar = "" '한글이 나올 때까지 영단어를 한..

VB(A) 2015.03.13

두 시트의 내용을 한 시트로 합치기

간단하다. 두 시트의 내용을 한 시트로 합치는 내용으로 Find, Cut, Copy 로 금방 해결가능하다. 어떤 방식을 써볼까.. 고민하다가 그냥 무식하게 밀고 나감. Option Explicit Sub getData() Dim wsAll As Worksheet, wsList As Worksheet, wsData As Worksheet Dim dataList As Range, dataTable As Range, rngPaste As Range Dim rngCell As Range, rngData As Range Dim intR As Integer Dim i As Integer With Application .ScreenUpdating = False .EnableEvents = False .Calculat..

VB(A) 2015.03.09

이중유효성목록을 선택하여 차트생성하기

엑셀 카페 질문게시판에 올라온 글. 유효성목록에서 항목을 선택하면 차트가 생성됐으면 한다는 질문. 함수를 이용한 답변이 올라왔지만, 매크로로 만들어보았다. B2 셀을 누르면 분류를 기준으로 유효성목록이 생성되면서 기존에 있던 차트가 없어지고 B3 셀에서 목록을 선택하면 해당 분류의 차트가 생성된다. 분류에 따른 연도 선택은 이중유효성 목록으로 만들었다. 데이터를 추가하거나 분류 자체를 추가하는 것도 가능하다. Option Explicit Sub mkList() Dim rngStart As Range Dim vrList() As Variant, jnList As String Dim rngCell As Range, rngArea As Range Dim i As Integer, cntLi As Integer ..

VB(A) 2015.03.07

다른 셀로 하이퍼링크 설정

시트1에 각 테이블의 제목이 있고 제목을 누르면 다른 시트의 테이블로 이동하는 하이퍼링크를 설정하는 매크로다. Sub mkHyper() Dim rngCell As Range, rngArea As Range Dim fnTable As String Dim i As Integer Set rngArea = Range("A2", Cells(Rows.Count, "A").End(xlUp)) '각 시트를 순환하며 작업 For i = 2 To Sheets.Count 'Sheets(1) A열을 돌며 하이퍼링크 설정 For Each rngCell In rngArea '각 시트의 A열에 목록이 있으면 하이퍼링크 설정 If Not Sheets(i).Columns("A").SpecialCells(2).Find(what:=rng..

VB(A) 2015.03.05

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

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