2015年7月22日星期三

Excel VBA 常用句法

首先,在「檢視」中「錄製巨集」,並即時在EXCEL最下方按停巨集。
然後再在「檢視」中「檢視巨集」,選擇某個巨集後按「編輯」。
再將下列字句抄入彈出的視窗中,適當的位置。
完成後先按 Save ,再按 Play。 記得之後返回工作表時「另存新檔」,以「使用巨集的活頁簿」格式儲存。
「'」後的是附註,給人看,不是給機看。「'」後的可以整句不打。但如有任何句子不希望機去看,請先打「'」。

Private A(140, 15) As Double     'A(_,_) 是一個141x16的表,專裝小數
Private B(15) As Integer         'B(_) 是一個單行16格的表,專裝整數
Private S(140) As String           'S(_) 是一個單行141格的表,專裝文字
Private T(140, 20) As Boolean         ' T(_,_) 是一個141x21的表,專裝是非值
                                                           '(TRUE/FALSE)
Private i As Integer            'i 是單純一個整數
Private j As Integer            'j 是單純一個整數

Sub Main()                                          '開始內文,按PLAY時確保浮標在此
        Sheets(“Sheet1”).Select              'Excel注視這第一張試算表

        For i = 1 To 15
                S(i) = Cells(1,i)
        Next i                                           '將試算表第一行頭15格抄入S

        For i = 1 To 140
                For j = 1 To 15
                        A(i,j) = Cells(i+1,j)
                Next j
        Next i                                           '將試算表之後140行頭15格抄入A

        Sheets(“Sheet2”).Select              'Excel注視這第二張試算表
        For i = 1 To 15
                S(i) = Cells(i,1)
        Next i                                           '將試算表第一行頭15格抄入S

        Sheets(“Sheet2”).Select              'Excel注視這第二張試算表

        For i = 1 To 15
        If Cells(i,1) > 0 Then
            B(i) = Cells(i,1)
        Else
                        B(i) = 0                        '將試算表第一行頭15格抄入B
        End If                                   '但當該格是負數,則抄0入去。
        Next i

       
        Sheets(“Sheet3”).Select                  'Excel注視這第三張試算表


        Do While i < 16
                Cells(i,1) = S(i)                     '輸出:將S抄入Excel第一行,直至第15
                i = i + 1                                'i 自己加一
        Loop                                            '符合條件才開始 Loop

        Do
                Cells(i,2) = A(i,1)                 '輸出:將A的第一行抄入Excel第二行,直至第15
                i = i + 1                                'i 自己加一
        Loop While i < 16                        'LOOP咗一次先檢查條件
       

End Sub