Excel VBA
◈ 시트 선택/활성화
① Sheets("시트명").Select ☞ 시트명 선택
② Workbooks("엑셀파일명").Worksheets("시트명").Activate ☞ 시트명 활성화(사용)
③ Worksheets("시트명").Activate ☞ 시트명 활성화(사용)
◈ 셀/범위 - 선택
① Dim 변수명 As Range
Set 변수명=WorkSheets("시트이름").Range("A1:B100") ☞ (A1:B100) 선택
Dim r1 As Range, r2 As Range, rMulti As Range
Worksheets("sheet1").Activate
Set r1 = Range("A1:B2")
Set r2 = Range("C3:D4")
Set rMulti = Union(r1, r2)
rMulti.Select ☞ 여러 범위 선택
② Range("A1").Select ☞ (A1) 선택
③ ActiveSheet.Columns.Select ☞ 열 전체 선택
ActiveSheet.Columns(2).Select ☞ 2번열 즉, B열 선택
④ Dim 변수명 As Long
변수명=WorkSheets("시트이름").Range("A100").End(xlup).Row + 1
☞ A열 마지막 데이터 아래의 첫번째 비어있는 행
⑤ 변수명=Cells(Rows.Count, "A").End(xlup).Row
☞ A열 마지막 데이터가 있는 행
⑥ Columns("B:D").Select ☞ B,C,D 열 전체 선택
⑦ Range(Cells(1, 1), Cells(5, 3))
ActiveCell.CurrentRegion.Select
◈ 셀/범위 - 작업
수식입력 Range("A1:H8").Formula = "=Rand()"
ActiveSheet.Cells(행, 열).Formula = "=Sum(범위)"
내용지우기 Worksheets("시트명").Range("범위").ClearContents
값 저장 Worksheets("시트명").Cells(행, 열).Value = 24
ActiveCell.Value = 24
ActiveCell.Offset(0,1).Value = 24
3개의 행삭제 Worksheets("Sheet1").Rows(3).Delete
행 수 저장 변수명=Shees("시트명").Range("A1").CurrentRegion.Rows.Count
열 감추기 Selection.EntireColumn.Hidden=False
행 감추기 Selection.EntireRow.Hidden=False
모든자료출력 ActiveSheet.ShowAllData
http://it205.tistory.com/tag/VBA%20%EB%B6%99%EC%97%AC%EB%84%A3%EA%B8%B0
Sub CopyValues()
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, SkipBlanks:=True
End Sub
ActivCell은 현재 선택된 Cell을 의미하고
PasteSpecial은 복사영역을 가져온다
그냥 복사하기 위해서는
Active.PasteSpecial를 사용하면 된다.
그래서 옵션으로
Paste:=xlPasteValues 값을 지정하게 된다.
그러면 값만 복사해주게 된다.
뭐.. 그냥 편히 쓰고 싶으시면 위의 매크로를 Copy&Paste하시고,
매크로를 등록하고 Ctrl + B 정도의 핫키를 쓰시면 됩니다.
(다만 사용시에 복사영역이 없을 경우에는 오류를 출력합니다;;)
==아래는 조사하면서 알게 된 PasteSpecial의 매개변수이다. ==
Paste
붙여넣을 값을 정의하는 부분이다.
xlPasteAll | |
xlPasteColumnWidths | |
xlPasteComments | |
xlPasteFormats | |
xlPasteFormulas | |
xlPasteFormulasAndNumberFormats | |
xlPasteValidation | |
xlPasteValues | |
xlPasteValuesAndNumberFormats | |
xlPasteAllExceptBorders |
http://msdn.microsoft.com/ko-kr/library/microsoft.office.interop.excel.xlpastetype(VS.80).aspx
Operation
붙여넣기할 때 하는 작업 방식이다.
xlPasteSpecialOperationAdd | |
xlPasteSpecialOperationDivde | |
xlPasteSpecialOperationMultiply | |
xlPasteSpecialOperationNone | |
xlPasteSpecialOperationSubtract |
http://msdn.microsoft.com/ko-kr/library/microsoft.office.interop.excel.xlpastespecialoperation(VS.80).aspx
SkipBlanks
복사해서 넣을 때 빈 셀을 같이 붙여 넣을 경우 True, 아닐 경우 False
(빈 셀을 클립보드에 포함할지 아닐지를 결정하는 옵션)
Traspose
범위를 붙여넣을 때에 행과 열을 바꾸면 True, 아닐 경우 False