목록vba (68)
rand(life)
어쩌다보니 이런 것도 하게 되었다. 사용자정의폼을 만들어서, 각 시트에 있는 특정 정보를 한 시트에 모으는 방법이다. 목록상자가 복수의 항목을 선택할 수 있게 하였다. 제일 어려운 부분은 목록상자에 .Rowsource로 목록을 집어넣는 것인데,가볍게 "A1:A10"하면 간단하지만앞으로 목록이 추가될 경우에도 자동으로 목록이 갱신되도록 하다보니 어려워졌다. 결국 구글신의 도움을 받아 해결 Private Sub UserForm_Initialize()With ListBox1.ColumnCount = 1.ColumnHeads = False.ColumnWidths = "10".AddItem "수입".AddItem "지출"End WithSheet1.Range("M3:p18").ClearContentsEnd Sub ..
지난번에 몇번 올라왔던 사용자 정의함수의 매크로 버전이다. 어떤 분이 엑셀이 느려진다고 해서 만들어보았다.속도 자체는 크게 다르지 않은 것 같다. 아무래도 전체 셀을 순환해야하니까....그래도 사용자정의함수였을 때는 셀에 다른 입력을 하거나하면 새로 계산을 하느라 버벅였는데지금은 결과값이 수식이 아니라 텍스트로 입력이 되기 때문에, 새로 계산을 하지 않는다.그 점은 더 나아진 것 같다.Option ExplicitSub CText()Dim strTemp() As StringDim rng1 As RangeDim rng2 As RangeDim rng3 As RangeDim r1 As RangeDim rr1 As RangeDim i As Integer, n As Integer, k As Integer Set r..
'시트의 모든 내용 지우기 Worksheets("시트명").Cells.Clear '시트안에 있는 모든 그림 지우기 Worksheets("시트명").Pictures.Delete 시트안에 있는 첫번째 그림등을 복사해서 붙여넣기Worksheets(시트명).Shapes(1).CopyWorksheets(시트명).PasteSpecial 붙여넣은 다음에는 자동으로 선택상태가 되므로With Selection ' 그림 위치 조정 .Top = 20 .Left = 40End With 띄어쓰기나 특수문자가 있는 경우에는 아래처럼 입력하세요.cmb차종.Rowsource = "'차량-판매현황'!A3:A10"시트이름을 작은 따옴표로 묶어야 합니다. [변수 선언시 접미사]데이터 형식 | 접미사Integer : %Long : &Cur..
엑셀에서 A1,A3,A5,A7 . . . 이런식으로A9999까지 선택하고 싶은데요 일일이 선택하지 않고 한꺼번에 선택하는 방법은 없나요?참고사이트: http://www.iexceller.com/MyXls/VBA_Beginner/VBA_Beginner8.asp 역시 지식인에서 나온 질문이다. 시트를 여러장 선택하는 코드는 지난번 답변한 적이 있기 때문에, 그때 코드를 뒤져봤다 Worksheets(i).Select (False) '시트를 앞시트에 더하여 선택 바로 이 부분이다. 셀 선택하는 것도 이렇게 가능할 거라 생각해서,cells(i, 1).select (false)이렇게 짰다. 그런데 오류가 난다. 인수의 개수나 속성 지정이 잘못 되었습니다찾아보니, 셀을 여러개 선택하는 방법은 VBA함수인 Union을..
지식인에서 들어온 질문.리스트상의 단어가 데이터상의 단어를 포함한 긴 단어에 있을 경우 해당하는 모든 중복되는 데이터에 대해 Listed 밑에 리스상의 단어로 하나만 표기하면 됩니다. 가령 APPLE 이 리스트 단어이면 DATA상에 APPLE_1/APPPL_2가 있으면 그냥 APPLE 만 표기하도록 매크로를 작성해주세요.List에 없는 단어 중 Name에 있으면 Non-listed에 표시해주세요여기서는 안보이지만, Apple, Melon, Strawberry, Pear 등으로 이루어진 List목록이 따로 있다Potato는 List목록에는 없는데 Name에는 있기때문에 Non-listed에 표시된다. 사실 앞의 문제는 해결이 쉽다. .Find 메서드를 이용하면 된다.시트에서 Ctrl-F 를 누른 것과 같은..
'지식인에서 엑셀 관련 질문에 답변을 해주다가 VBA공부를 시작했다. 다음은 어느 분이 '연도-월'의 이름을 가진 시트가 많이 있는 파일에서, 연도별로 시트를 저장하고, 올해 1월과 작년 12월, 그리고 연도가 아닌 글자로 시트명이 된 시트들을 따로 모아 저장해달라는 의뢰(?)에 대한 연구 결과이다파일로 다운로드Option Explicit '변수를 선언해야 사용할 수 있다는 옵션Sub MergeWBs() '매크로 이름Dim i As Integer '순환문 작업에 필요한 변수Dim shtnum As Integer '시트의 총갯수를 저장하기위한 변수Dim sh As Worksheet '선택한 시트를 복사할 때 시트 각각에 배당하는 변수Dim shs As Sheets '선택한 시트 전체에 배당하는 변수Dim ..
네이버 지식인에서 큰형(ks_1862)님의 답변 중 참고하였습니다.D:\TEMP 라는 폴더 안에 있는 모든 XLSX 확장자를 가진 엑셀파일에서 "통계"라는 이름을 가진 시트를 복사해옵니다.Option ExplicitSub MergeWBs()Dim wbDst As WorkbookDim wbSrc As WorkbookDim wsSrc As WorksheetDim MyPath As StringDim strFilename As String Application.DisplayAlerts = FalseApplication.EnableEvents = FalseApplication.ScreenUpdating = False MyPath = "D:\temp"Set wbDst = ThisWorkbookstrFilename ..
[엑셀Q&A,VBA] 같은 조건의 문자열 찾아 합치기 1 [엑셀Q&A,VBA] 같은 조건의 문자열 찾아 합치기 2 같은 내용입니다만, 댓글로 좀 더 좋은 수식을 알려주신 분이 있습니다. 네이버 지식인에서 활약하시는 "큰형님"이라는 닉을 쓰시는 분이 만드신 사용자함수입니다. 써보니 확실히 좋습니다. 혼자 머리 싸매고 고민하느니 잘 하는 사람한테 물어보는게 최고 좋다는! Function ConcatText(범위1, 조건, 범위2) As String Dim strTemp() As String Dim rng As Range Dim i As Integer, n As Integer n = 범위2.Column - 범위1.Column For Each rng In 범위1 If rng = 조건 Then ReDim Pres..