Excel VBA 학습 노트-1

5185 단어 Excel
1. Union 사용법:
콤비네이션
 
Sub SeveralRows()
    Worksheets("Sheet1").Activate
    Dim myUnion As Range
    Set myUnion = Union(Rows(1), Rows(3), Rows(5))
    myUnion.Font.Bold = True
End Sub 

 
 2.Array 함수:
 
Sub FormatSheets()
    Sheets(Array("Sheet2", "Sheet3", "Sheet5")).Select
    Range("A1:H1").Select
    Selection.Borders(xlBottom).LineStyle = xlDouble
End Sub 

 
 3.셀 오류 값 목록:
 
상량
오류 번호
셀 오류 값
xlErrDiv0
2007
#DIV/0!
xlErrNA
2042
#N/A
xlErrName
2029
#NAME?
xlErrNull
2000
#NULL!
xlErrNum
2036
#NUM!
xlErrRef
2023
#REF!
xlErrValue
2015
#VALUE!
 
사.
명명 충돌로 인한 전형적인 오류는 모방 가능한 이름, 중복 성명, 미성명 식별자, 프로세스를 찾을 수 없음을 포함한다.모듈 시작에 Option Explicit 문장을 추가하면 변수가 사용되기 전에 변수에 대해 명확한 설명을 하도록 강요할 수 있으며, 이렇게 하면 가능한 명칭 충돌과 표지부호와 관련된 오류를 피할 수 있다.
 
5. 여러 매개변수가 있는 Sub 프로세스 호출
Call 문을 사용하려면 괄호를 사용하여 매개변수를 둘러싸야 합니다.
 
Sub Main()
    HouseCalc 99800, 43100
    Call HouseCalc(380950, 49500)  //   Call HouseCalc 380950,49500,  
End Sub

Sub HouseCalc(price As Single, wage As Single)
    If 2.5 * wage <= 0.8 * price Then
        MsgBox "You cannot afford this house."
    Else
        MsgBox "This house is affordable."
    End If
End Sub

 6.Function 프로세스 호출 시 괄호 사용하기
 
Answer3 = MsgBox("Are you happy with your salary?", 4, "Question 3")

 
 
 7.이름 매개변수 전달
 
Sub 또는 Function 프로세스의 문장은 호출된 프로세스에 값을 전달하기 위해 명명된 매개 변수를 사용할 수 있습니다.명명된 매개변수를 순차적으로 내보낼 수 있습니다.명명된 매개변수의 구성은 매개변수 이름과 콜론(:=) 및 등호 다음에 매개변수에 값을 지정합니다.
 
answer3 = MsgBox(Title:="Question 3", _
Prompt:="Are you happy with your salary?", Buttons:=4)

 
 
8. 객체 변수에 값 부여
 
Set 문구를 사용하여 객체 변수에 객체를 지정할 수 있습니다.객체 표현식 또는 Nothing을 지정할 수 있습니다.예를 들어, 다음 객체 변수 지정은 유효합니다.
 
Set MyObject = YourObject    '  。
Set MyObject = Nothing    '  。
 
 
New 키워드와 Set 문구를 사용하여 객체 변수를 설명하고 값을 지정할 수 있습니다.예:
 
Set MyObject = New Object    '  

 
개체 변수를 Nothing과 같이 설정하면 예상치 못한 변수 변경으로 인해 개체가 변경되지 않도록 개체 변수와 특정 개체의 연관이 끊어집니다.연관된 객체를 닫으면 객체 변수가 항상 Nothing으로 설정되므로 객체 변수가 유효한 객체를 가리키는지 확인할 수 있습니다.예:
 
If Not MyObject Is Nothing Then
'  。
    . . .
End If

 
물론, 이 검사는 사용자가 대상 변수가 인용하는 대상을 포함하는 프로그램을 닫았는지 절대적으로 결정할 수 없습니다.
 
 
9. 참조 객체의 현재 인스턴스
 
Me 키워드는 코드가 실행 중인 객체의 현재 인스턴스를 참조하는 데 사용됩니다.현재 객체와 연관된 모든 프로세스는 Me를 통해 참조할 수 있습니다.me를 사용하여 객체에 대한 현재 인스턴스 정보를 다른 모듈에 전달하는 프로세스가 유용합니다.예를 들어, 모듈에 다음과 같은 프로세스가 있다고 가정합니다.
 
'*********
'  :clsPerson
'*********
Option Explicit

Private name As String
Private age As Integer

Public Property Let setName(n As String)
   name = n
End Property

Public Property Let setAge(y As Integer)
   age = y
End Property

Public Property Get getName()
    getName = name
End Property

Public Property Get getAge()
  getAge = age
End Property

Public Sub prints()
   Debug.Print Me.getAge & "," & Me.getName
End Sub

 
 
10. 반복 프로세스 만들기
 
Function Factorial (N)
    If N <= 1 Then    '  。
        Factorial = 1    
    Else    '   N > 0   Factorial 。
        Factorial = Factorial(N - 1) * N
    End If
End Function

 
 
11. 성명수 그룹
 
0 또는 1 인덱스에서 배열 여부를 설정하는 것은 Option Base 문구에 따라 다릅니다.Option Base가 1로 지정되지 않으면 배열 인덱스는 0부터 시작됩니다.
a, 고정 크기의 그룹
 
ReDim MyIntegerArray(10) As Integer

 
b, 동적 배열
 
Dim sngArray() As Single

이 과정에서 ReDim 문구를 사용하여 은밀한 배열 설명을 할 수 있습니다.ReDim 문장을 사용할 때는 배열의 이름을 잘못 맞추지 않도록 조심해야 합니다.그렇지 않으면 모듈에 Option Explicit 문구가 포함되어 있어도 두 번째 그룹이 생성됩니다.
 
과정 중의 수조 범위에 대해 ReDim 문장을 사용하여 그 비트를 바꾸고 원소의 수와 각 비트의 밑바닥 귀속을 정의할 수 있다.필요할 때마다 ReDim 문구를 사용하여 동적 배열을 변경할 수 있습니다.그러나 이 동작을 할 때, 그룹에 존재하는 값은 잃어버린다.그룹의 원래 값을 저장하려면 ReDim Preserve 문구를 사용하여 그룹을 확장할 수 있습니다.예를 들어 아래의 문장은varArray 수조는 10개의 원소를 확충했지만 원래 수조의 현재 값은 사라지지 않았다.
 
ReDim Preserve varArray(UBound(varArray) + 10)
 
 
  12.전달 매개 변수
모든 매개 변수는 주소에 따라 전달되며, 기본값은 Byref로 전달됩니다.
값에 따라 매개 변수를 전달할 수 있습니다. 과정의 성명에 ByVal 키워드가 포함되면 값에 따라 사용할 때 원래의 변수를 복사하여 매개 변수로 전달합니다.프로세스 내부의 매개 변수를 변경할 때 원래의 변수에 영향을 주지 않습니다.
 
Sub Factorial1(ByVal MyVar As Integer)       ' Function declaration.
    MyVar = 12
End Sub

Sub Factorial2(MyVar As Integer)       ' Function declaration.
    MyVar = 12
End Sub


Sub Factorial3(ByRef MyVar As Integer)       ' Function declaration.
    MyVar = 12
End Sub

Sub test()

    Dim aa As Integer
    aa = 5
    Call Factorial1(aa)
    Debug.Print aa
    
    aa = 5
    Call Factorial2(aa)
    Debug.Print aa
    
    aa = 5
    Call Factorial3(aa)
    Debug.Print aa

End Sub
 
 
 

좋은 웹페이지 즐겨찾기