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

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

기타 조회 수 33814 추천 수 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
번호 제목 글쓴이 날짜 조회 수sort
» 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 33814
64 기타 오피스2010 64bit(64비트)를 위한 API Declare 방법 _ 윈도우 도움말 file [레벨:30]아별 2017-04-21 39347
63 [펌] Visual Basic (비쥬얼 베이직) 함수 정리 imagefile [레벨:30]아별 2009-11-27 20068
62 시트에서 콤보박스 활용하기 file [레벨:30]a☆ 2005-11-12 16707
61 메시지 박스 대용으로 Shape 사용하기 file [레벨:30]아별 2009-05-07 16044
60 기타 [펌] 엑셀 VBA 총정리 _ Excel 개체 모델 참조 등 image [2] [레벨:30]아별 2010-03-09 15918
59 [VBA] 전역변수 설정하기. Public 문, Private 문 imagefile [레벨:30]아별 2008-07-01 14017
58 엑셀에서 사용하는 언어 확인하기. file [1] [레벨:30]아별 2009-06-03 13775
57 기타 [펌] VBA 공부를 시작하시는분들에게 추천하는 강의자료 imagefile [4] [레벨:30]아별 2011-03-21 13697
56 기타 [Excel VBA] 피벗테이블(PivotTable)을 VBA로 컨트롤해보자.. [레벨:30]아별 2008-12-19 12074
55 [엑셀VBA] 자동필터를 매크로로 구현하기 [레벨:30]아별 2008-08-28 11224
54 엑셀에서 달력 집어 넣기.. [1] [레벨:30]a☆ 2004-10-21 10946
53 엑셀2007에서 셀의 색상을 RGB로 뽑아내기 file [레벨:30]아별 2009-10-06 10196
52 엑셀의 유저폼 관련 [1] [레벨:30]a☆ 2004-10-21 10049
51 엑셀에서 줄바꿈에 대해서.. 줄바꿈하기 제거하기 등등.. [레벨:30]a☆ 2004-11-15 9992
50 기타 [링크] VBA로 파일을 다루는 방법에 대한 강좌들을 모아놓은 겁니다. [레벨:30]아별 2010-03-03 9830
49 기타 오피스2010 64bit(64비트)를 위한 API Declare 방법 file [2] [레벨:30]아별 2011-10-05 9217
48 [엑셀VBA] 네이버 지식인 답변 _ 엑셀 쿼리를 이용해서 펀드 기준가 데이터를 읽어오기. file [레벨:30]아별 2008-04-30 9120
47 기타 VBA _ 레지스트리 다루기 ( registry control ) imagefile [레벨:30]아별 2011-03-19 8671
46 [10/19일 수정] 엑셀 매크로 수정하기... [2] [레벨:30]a☆ 2003-09-29 8250