엑셀/VBA 38

엑셀 vba/시트 없으면 시트 생성하기/On Error Resume Next/Sheets.Add.Name

1. 코드작성 1) summary 시트이름이 없으면 summary 탭을 만든다. 2) 알람을 칠지말지 코드를 참고하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Sub 시트없으면만들기() Dim ws As Worksheet '오류가 있어도 실행하라 라는 코드 On Error Resume Next Set ws = Worksheets("summary") '오류 있으면 알람 치라는 코드 On Error GoTo 0 If ws Is Nothing Then Sheets.Add.Name = "summary" End If End Sub cs *에러가이드 참고*

엑셀/VBA 2023.08.13

엑셀 vba/다른 시트 데이터가져오기/문자열 포함 여부 확인 함수 활용/InStr

다른 시트의 데이터를 가져와서 정리해보자. 0. 예제 파일 작성하기 1) 시트 3에는 3줄의 데이터를, 시트2에는 2줄의 데이터, 시트1에는 1줄의데이터를 작성하고, summary 탭에 데이터들을 모아보자. 1. 코드작성 1) 다른 시트의 데이터들을 모아서 시트이름과 함께 작성해보자. 2) sheet 라는 문자열이 시트이름에 포함되어 있어야 코드가 진행된다.(InStr) -. InStr 는 문자열이 없으면 0을 출력한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 Sub 다른시트데이터가져오기() Dim ws_cou..

엑셀/VBA 2023.08.13

엑셀(vba)/다른 시트 데이터 복사 붙여넣기/시트 변수명으로 사용하기

0. 예제 작성 1) 시트 4개를 만들었고, summary 탭에 나머지 탭들의 데이터를 복사 붙여넣기 해보자. 1. 코드작성 1) 코드는 셀 1개만 복사하기, 범위 복사하기 2개를 다뤘다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Sub 다른시트() Dim ws_count As Integer Dim ws_name As String ws_count = Worksheets.Count For n = 1 To ws_count ws_name = Sheets(n).Name ' 셀하나만 복사하기 Sheets(ws_name).Cells(1, 1).Copy Sheets("summary").Cells(1, 1) ' 범위로 복사하기1 Sheets(ws_name).Ran..

엑셀/VBA 2023.08.13

엑셀 vba/시트이름 가져오기/시트이름 변수에 넣어 활용하기

엑셀 시트의 이름을 가져오고, 변수에 넣어 활용해보자. 0. 예제파일 작성. 1) 시트 3개를 만든다. 1. 코드작성 1) 위 시트 3번과 1,1 의 데이터인 3 부터 차례대로 출력될것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Sub 시트이름가져오기() Dim ws_count As Integer Dim ws_name As String ws_count = Worksheets.Count For n = 1 To ws_count ws_name = Sheets(n).Name MsgBox (ws_name) MsgBox (Sheets(ws_name).Cells(1, 1).Value) Next End Sub Colored by Color Scripter cs 2. 결과 1) 아래 순서대로 나올것..

엑셀/VBA 2023.08.13

엑셀 vba/필터된 셀에 붙여넣기/보여지는셀에만 붙여넣기/필터숨겨진셀에 복사됨

엑셀하다보면 필터된 셀에 복사 붙여넣으면 숨겨진 셀에 붙여넣기가 되어버린다. 해결해보자 1. 예제 파일을 하나 만든다. 1) 복사할셀과 붙여넣을 셀을 만들었다. 2) 붙여넣을셀은 키위만 제외하여 필터를 걸자. - 바나나만 남았다. 2. VBA 코드작성 -. 코드를 일부 수정함. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Sub FILTERED_PASTE() Dim COPYRANGE As Range Dim pasteRANGE As Range Dim i As Integer Set COPYRANGE = Application.InputBox("복사할범위 선택", Type:=8) Set pasteRANGE = Application.InputBox("불여넣..

엑셀/VBA 2023.08.10

엑셀 vba - 하이퍼링크/한번에 하이퍼링크/셀 순서대로 하이퍼링크하기/순차/차례대로 링크걸기

보고서를 작성할때 이미지를 첨부해야하는데 본문 sheet에 작성하면 너무 지저분하다. 그래서 사진은 시트를 만들어서 따로 정리를 하자 근데 항목이 100개를 넘어간다면 본문 sheet의 해당하는 사진을 찾는데 시간이 오래걸린다. 하이퍼링크를 통해 본문의 해당 내용의 사진으로 연결할 수 있도록 해보자. 코드는 아래와 같다. Sub 하이퍼링크() sheet_name1 = "Pending_Image" sheet_column = "!A" For i = 31 To 190 sheet_name2 = sheet_name1 & sheet_column & (Cells(i, 2) + 1) Cells(i, 3).Select Selection.Value = "Image" ActiveSheet.Hyperlinks.Add Anch..

엑셀/VBA 2021.12.18

VBA - 창 모두 저장 후 닫기 / 창 모두 닫기 / 창 한개 빼고 닫기

매크로를 돌리다보면 엑셀창이 너무 많이 열려 닫기가 힘들때가 있다. 한번에 저장하는 VBA가 있으면 참 편리할것 같다. 우선 처음 시도는 모든창을 저장하고 닫는거였다. 그랬더니 VBA를 실행후에 다 저장이 되긴했다. 저장 후 엑셀 창을 다끄고 다시 켜려고 하니 파일이 켜지지가 않는다.... 뭔일인지 모르겠지만 그냥 VBA 실행한 엑셀 창 한개를 놔두고 닫아주기로 한다. 지금 VBA를 실행한 엑셀 창 한개 남기고 다 저장하고 종료하기 코드는 아래와 같다. Sub 열린파일모두저장하기() Dim ms As Workbook For Each ms In Application.Workbooks If ms.Name ThisWorkbook.Name Then ms.Save ms.Close End If Next MsgBox..

엑셀/VBA 2021.08.17

엑셀 VBA - 테두리 그리기

엑셀 데이터를 좀 더 잘보기 위해서는 테두리가 좋다. 테두리도 실선, 굵은선을 이용하면 좀 더 분류하기 좋다.( 월별, 날짜별, 데이터 분류 별 등등) 오늘은 테두리 VBA로 그리는 방법 연습해보자~~ *셀 모든 곳에 테두리 그리기 코드 Sub 테두리그리기() Set RNG1 = Range("B2:E7") RNG1.Borders.LineStyle = 1 RNG1.Borders.Weight = xlThick RNG1.Borders.ColorIndex = 35 End Sub *코드 해석 - 아래 표의 범위를 RNG1 변수에 넣는다. - 그을 선의 스타일은 1로 실선을 택한다. - 두께는 THIN 얇게 - 컬러 인덱스는 35 위의 조건으로 테두리를 그린다. 코드를 돌려보자. 위의 코드대로 실행되었음을 확인할 ..

엑셀/VBA 2020.11.11

엑셀 VBA - 열너비,행높이 조절하기

지난시간엔 데이터를 여러개 볼때 편하기 위해 아래와 같이 데이터에 맞게 너비를 조절했다. 근데 발표자료나 다른자료들에 첨부할때 장소가 협소하면 괜찮은데 너비가 너무 좁아 불편하다. 조금 넓게 조절을 해보자 숫자로 조절하면 좀 더편하겠디? 그래서 아래 코드를 이용할 거다. Sub 열너비조절하기() Columns("B:E").ColumnWidth = 20 End Sub *코드설명 - B에서 E열까지 너비를 20로 바꾸어 주겠다. 바꾼 결과는 아래와 같다. 열너비가 늘어났다. 열너비는 셀 사이를 눌러보면 확인할 수 있다. 픽셀로 환산하는 방식인가 본데 그것까지는 모르겠고 대충 경험치로 설정하자~ 픽셀은 나중에 사진 첨부할때 용이할 듯하다. 그럼 이제 행도 가능한지 확인해봐야지 Sub 행높이조절하기() Rows..

엑셀/VBA 2020.11.10

엑셀 VBA - 열 너비 자동 조절 하기/ AUTOFIT 사용하기

데이터를 보면 열이 너무 넓을 때가 있다. 아래와 같은 상황이다. 데이터에 비해 열이 넓어서 공백이 너무 많다. 공백을 지워보자. 딱 데이터에 맞게 조절하는 코드는 아래와 같다. Sub 행크기조절하기() Columns("B:E").AutoFit End Sub 아주 간단하다. 열의 범위를 지정하고 오토핏!!!! 자동으로 맞춰줘 오토핏!! ㅋㅋㅋ 결과는 아래와 같다. 위의 결과는 보기 좋다기 보다 여백이 있는게 보기 좋기도 하니까 근데 데이터 항목이 현재는 3개인데 20개 넘어가고 하면 한번에 보기 쉽지 않다. 한번에 좀 더 많은 것을 보기 위해 위와 같이 여백을 줄여놓는 편이 좋다고 생각한다.

엑셀/VBA 2020.11.09