1. 아별툴
  2. 아별툴 패밀리
  3. 엑셀 질문하기
  4. 엑셀 강좌
  5. 엑셀 팁
  6. 엑셀 자료실
  7. 엑셀 연구과제
  8. 엑셀 북마크
  9. 관련 프로그램 소개

엑셀 VBA 간단한 팁 모아놓기.. +_+

기타 조회 수 25484 추천 수 12 2007.01.24 20:49:45


■ Macro Tip 
( 출처 : http://www.abyul.com/zbxe/5702 )

****   Macro를 작성하다가 특정 코드에 커서를 놓고 F1을 누르면, 관련 VBA 도움말을 볼 수 있다.  ****

1. 다른 함수를 호출할때는 Call을 사용하자. 
 ex) Call edit_MakeToValue
2. 전역변수로 선언할 때는 Public으로 선언하라. 
 ex) Public strPath          As String
3. 상수 처리는 Const를 사용. 
 Public Const HomePage  As String = "http://www.abyul.com/"
3. 정확하고 완전한 프로그램을 위해서는 Option Explicit로 선언하자. 
 ex) Option Explicit
4. ERROR처리 
 On Error GoTo ERROR:
 ERROR:
5. 상대 위치(바로 아래셀) 이동 & 맨 마지막셀로 이동 
 ActiveCell.Offset(1, 0).Range("A1").Select
 Application.Goto Sheets("환율표").Range("C" & Sheets("환율표").Range("C65536").End(xlUp).Row + 1)
6. workBook실행시 자동 실행시키기. 
 ThisWorkbook에 Workbook_Open()함수를 만들고 명령어를 등록한다.
7. 메시지 박스 띄우기 
 MsgBox "현재 파일은 xls로 저장되어 있지 않아 Text 파일로 생성할 수 없습니다!", vbExclamation, "CoreLogic"
 부정 : vbExclamation
 알림 : vbInformation
 IF MsgBox("데이터를 지우시겠습니까?", vbyesno + vbQuestion + vbDefaultButton2, Es) = vbYes THEN …
 IF MsgBox("이미 등록된 코드입니다. 수정하시겠습니까?", vbyesno + vbQuestion, Es) = vbYes THEN…
8. 사용자 입력 폼 띄우기 
 User_Input = Application.InputBox( _
               Prompt:="1 ~ 10 까지의 숫자를 입력하세요.", _
               Title:="분기문 예제", Type:=1)
9. Case문 
 PIN = "123456-1234567"
 Select Case Mid(PIN, 8, 1)
     Case "1", "3"
         MsgBox "남자 입니다.", vbInformation, HomePage
     Case "0", 5 To 9, Is < 0
         MsgBox "잘못입력했습니다.", vbInformation, HomePage
     Case Else
         MsgBox "여자거나 일껄?", vbInformation, HomePage
 End Select
10. 셀수식보기 
 수식 넣을 셀 선택하고, Ctrl+F3눌러 이름 정의, "수식보기"라고 이름 넣고,
 참조에 "=GET.CELL(6,수식셀주소)" 입력. 수식넣을 셀에 "=수식보기"라고 입력.
11. 문자열 대체시키기 
 strBookName = Replace(strBook, ".xls", "")
12. 문자열 서식 포멧 지정하기 
 year = Format(Cells(5, 4), "0000")
12. 절대 참조와 상대 참조 
 절대참조 : strName = Cells(2,3)
 상대참조 : strName = R[2]C[3]
• For문-1. 기본 순환문. 증가 단위를 조정(Step)    
 k = Range("A65536").End(xlUp).Row   
 For i = 0 To 2 Step 1         
     For j = 1 To k Step 2       '2단위로 증가시킴   
     Next j 
 Next i 
• For문-2. 특정 셀 영역을 순환시키기. For Each X In Total.. Next X  
 Dim rngCell As Range 
 Dim rngList As Range 
 Dim shtSheetAs Worksheet 

 For Each shtSheet In Sheets 
  If shtSheet.Name = "Cost" Then shtSheet.Delete
 Next shtSheet 
 Set rngList = [영역이름] 
 For Each rngCell In rngList 
  어떤 기능..
 Next rngCell 
• 엑셀 내부 함수를 Macro에서 사용하는 방법. Application.함수()  
• 엑셀의 영역 이름을 Macro에서 사용하기. [영역이름] 
 rngBasic = Application.VLookup(rngCell, [Source], 5, False)
• 현재 셀이 포함된 연속된 영역의 선택. Selection.CurrentRegion 
 Set rngCell = Selection.CurrentRegion
 numField = Selection.Column - rngCell.Column + 1
• 매크로를 이용하여 단축키를 지정하는 방법 
 Application.MacroOptions Macro:="Macro1", ShortcutKey:="a"
• VBA창에서 직접실행창으로 변수명등 확인할 때.. 
 Ctrl+G를 누르고, "debug.print 변수명등"을 입력하고 엔터를 치면 바로 아랫줄에 결과가 나온다.
 debug.print activecell.currentregion.address
 단순하게 ? 변수명이라고 입력해도 된다.
 ? Selection.Value
• 현재 선택된 셀 영역을 수정하고 싶을때.. 
 ' 선택영역을 수정할때.. 첫번째행만 선택할때..
 selection.CurrentRegion.resize(1).address
 ' 선택영역을 수정할때.. 첫번째열만 선택할때..
 selection.CurrentRegion.resize(,1).address
 ' 선택영역을 수정할때.. 첫번째셀만 선택할때..
 selection.CurrentRegion.resize(1,1).address
• 현재 선택된 셀 영역을 확장하고 싶을때.. 
 '현재 선택영역을 오른쪽 4번째로 이동시키기
 Selection.Offset(0, 4).Select
 '현재 선택셀에서 오른쪽 4번째 셀 선택하기
 ActiveCell.Offset(0, 3).Range("A1").Select
 '현재 선택셀부터 오른쪽 11번째 셀까지 선택하기
 Range(Selection, Selection.Offset(0, 11)).Select
 '현재 선택셀부터 오른쪽 끝셀까지 선택하기
 Range(Selection, Selection.End(xlToRight)).Select
 '왼쪽 시작셀만 선택하기
 Selection.End(xlToLeft).Select
 '맨 아래에서 마지막행 추적해서 선택하기
 Range("A65536").Select
 Selection.End(xlUp).Select

• 이름 정의로 동적 영역 설정하기 
 =OFFSET(DB!$B$3,0,0,1,COUNTA(DB!$3:$3))
 =INDIRECT("업체DB!G2:I"&COUNTA(DB$G$2:$G$65536)+1)

• 사용언어 유추하기   
 '자동고침 옵션의 설정 언어를 참조한다.  
 ? Application.SpellingOptions.DictLang  
  4105 : 영어(캐나다)  
  3081 : 영어(오스트레일리아)  
  2057 : 영어(영국)  
  1042 : 한국어  
  1033 : 영어(미국)  


--------------------------------------------------------------------------------------------------------------------------------------------------------

2010.12.08 내용 추가.

VBA에서 웍북에 정의된 이름을 사용하려면 아래처럼 사용하면 됩니다.

[CellStyle_abyul].cells.count

하지만 현재 문서가 아닌, 다른 문서의 이름을 참조하려면 아래처럼 접근해야합니다.

workbooks("abyul_RibbonX_Tab.xlam").Names("CellStyle_abyul").RefersToRange.Address




■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ 1) Visual Basic에서의 문자 결합                                                                                                         ■
■ 2) 순환문                                                                                                                                      ■
■ 3) Sheet Name 가져오기                                                                                                                 ■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

Sub 시트별로특정셀의값을갖고와총괄표작성하기()

    j = 0

    For i = 3 To 19    
    j = 3 - i  
    ActiveSheet.Next.Activate                                          ' 이전 시트의 경우는 ActiveSheet.Previous.Activate
    Sheets("총괄표").Range("B" & i).FormulaR1C1 = "='" + ActiveSheet.Name + "'!R[" & j & "]C[19]"
          ' 원래 "'!U3"해주면 될 것 같은데.. 자꾸 에러가 나서 상대 참조로 바꿔 버렸다.. =_=;;  "'!R[" & j & "]C[19]"
    Next
    
    Sheets("총괄표").Activate

End Sub

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ 1) 변수(상수) 문자열 설정                                                                                                               ■
■ 2) Visual Basic에서의 문자 결합                                                                                                         ■
■ 3) 에러(Error) 처리                                                                                                                         ■
■ 4) 메시지 박스 (Message Box)                                                                                                          ■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

Const basicPath$ = "\dataCFO Group재무팀환율관리"
Const rateFileName$ = "환율관리_2006.xls"

Sub 환율관리열기()
    Workbooks.Open Filename:=basicPath + rateFileName
End Sub

Sub 일일환율업데이트()
    On Error GoTo a:
    ActiveWorkbook.UpdateLink Name:= _
        basicPath + rateFileName, Type:= _
        xlExcelLinks

        If (0) Then
a:         MsgBox "일일 환율 데이터 불러오다가 에러 남!! =_+"
        End If

End Sub


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ 1) 상대 위치 이동                                                                                                                           ■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

    ActiveCell.offset(1, 0).Range("A1").Select

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■ 1) 특정 시트의 특정행의 마지막 입력 포인트로 이동하기                                                                       ■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

    Application.Goto Sheets("환율표").Range("C" & Sheets("환율표").Range("C65536").End(xlUp).Row + 1)






Case문..
출처 : http://blog.empas.com/updata/10656357

Function 성별(주민번호) - 함수이름은 성별, 입력 인수는 주민번호
    Select Case Mid(주민번호, 8, 1) - Mid 함수로 입력되는 주민번호의 8번째 자리의 1글자를 추출한다.
    Case 1, 3 - 추출된 글자가 1이거나 3이면
        성별 = "남자" - 성별함수는 “남자”를 구하고
    Case 2, 4 - 추출된 글자가 2이거나 4이면
        성별 = "여자" - 성별함수는 “여자”를 구하고
    Case Else 추출된 글자가 1, 2, 3, 4가 아니면
        성별 = "오류" - 성별함수는 “오류”를 구한다.
    End Select
End Function



문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
» 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 25484
64 기타 오피스2010 64bit(64비트)를 위한 API Declare 방법 _ 윈도우 도움말 file [레벨:30]아별 2017-04-21 389
63 기타 [VBA] 컴퓨터 이름 알아내기 등 PC 환경 변수 읽오이기.. Environ [레벨:30]아별 2015-04-08 1311
62 기타 [VBA] 엑셀 파일을 PDF로 저장(EXPORT) 시키기 [1] [레벨:30]아별 2015-01-21 3385
61 기타 [펌] 추가 기능 개발시 리본메뉴에 넣을 MSO Image 쉽게 확인하기 imagefile [레벨:30]아별 2015-01-09 850
60 기타 엑셀 2013에서 웹 브라우저 컨트롤(ActiveX, web browser)을 시트에 삽입할 수 없는 문제.. imagefile [레벨:30]아별 2014-01-19 2016
59 기타 [ VBA Tip ] 엑셀 VBA로 사진(JPG)의 EXIF 정보(GPS 포함) 불러 들이기.. imagefile [6] [레벨:30]아별 2012-02-27 4874
58 기타 VBA로 인디언식 이름 만들어주는 사용자 정의 함수 만들기.. imagefile [1] [레벨:30]아별 2012-01-11 3056
57 기타 오피스2010 64bit(64비트)를 위한 API Declare 방법 file [2] [레벨:30]아별 2011-10-05 5467
56 기타 [펌] VBA 공부를 시작하시는분들에게 추천하는 강의자료 imagefile [4] [레벨:30]아별 2011-03-21 10915
55 기타 VBA _ 레지스트리 다루기 ( registry control ) imagefile [레벨:30]아별 2011-03-19 4872
54 기타 엑셀에서 소리 내기(재생) _ sound play file [1] [레벨:30]아별 2010-12-13 4561
53 기타 헷갈리기 쉬운 워크시트 함수와 VBA함수 비교표 imagefile [레벨:30]아별 2010-10-05 4335
52 기타 기본 제공 대화 상자 실행하면 초기 값 설정 imagefile [레벨:30]아별 2010-08-25 3745
51 기타 [펌] 엑셀 VBA 총정리 _ Excel 개체 모델 참조 등 image [2] [레벨:30]아별 2010-03-09 10686
50 기타 [링크] VBA로 파일을 다루는 방법에 대한 강좌들을 모아놓은 겁니다. [레벨:30]아별 2010-03-03 7190
49 현재 엑셀 파일의 색상표(Color Chart) 확인용 코드 [레벨:30]아별 2009-12-24 5254
48 [펌] Visual Basic (비쥬얼 베이직) 함수 정리 imagefile [레벨:30]아별 2009-11-27 15266
47 엑셀 사용자 정의 수식(UDF)에 도움말 넣는 방법. [레벨:30]아별 2009-11-11 3943
46 Excel에서 메뉴 및 메뉴 모음을 사용자 지정하는 방법 image [레벨:30]아별 2009-11-04 5148
45 기타 엑셀 기본 제공 대화 상자 인수 목록 file [레벨:30]아별 2009-11-04 5815