컴퓨터잡담

VBA - 시트/셀, 엑셀 값만 복사하기! (VBA을 이용한 복사영역 조절)

by 디케 posted Oct 04, 2011
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
엑셀 값만 복사하기! (VBA을 이용한 복사영역 조절)

 

http://linkhouse.kr/2127

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
msdn 설명글 주소
http://msdn.microsoft.com/ko-kr/library/microsoft.office.interop.excel.xlpastetype(VS.80).aspx

Operation
붙여넣기할 때 하는 작업 방식이다.
xlPasteSpecialOperationAdd
xlPasteSpecialOperationDivde
xlPasteSpecialOperationMultiply
xlPasteSpecialOperationNone
xlPasteSpecialOperationSubtract
msdn 설명글 주소
http://msdn.microsoft.com/ko-kr/library/microsoft.office.interop.excel.xlpastespecialoperation(VS.80).aspx

SkipBlanks
복사해서 넣을 때 빈 셀을 같이 붙여 넣을 경우 True, 아닐 경우 False
(빈 셀을 클립보드에 포함할지 아닐지를 결정하는 옵션)

Traspose
범위를 붙여넣을 때에 행과 열을 바꾸면 True, 아닐 경우 False