提綱
語法
    請參考 Microsoft Visual Basic 6.0.
方法(函數)
    系統格式(sub),自定義格式(Function).
控件
    采用VB6.0控件.
事件
    單元格事件,控件事件.
結構
Project,object,modules,class modules,forms 等.
操作數據庫
    數據庫對象(ADO),建立連接,添加,刪除,更新等.
擴展
    不僅用在Excel,在 Word,PowerPoint 等中都可用.

解决方案 »

  1.   

    方法(函數)
    Sub
        格式代碼:
               Sub Sub_Name(ByVal params as type)
                   ‘add code in here
               End Sub
    Function(函數) 
        格式代碼:
               Function Fun_Name(ByRef params as type)
                   ‘add code in here,可以有返回值
               End Function
    事件
    單元格事件
        格式代碼:
             Option Explicit
        Private Sub Worksheet_SelectionChange(ByVal Target As range)
    Dim r(2) As range
    Set r(1) = Target
    Set r(2) = range(“A1")
    If r(1).row = r(2).row And r(1).Column = r(2).Column Then 
        ‘deal event   
    End if
        End Sub
        單元格賦值方法(讀取數據類同):
    1、[A1] = 10                                    
    2、[A1,A2] = 10 或 [A1:A2] = 10 
    3、Range(“A1”) = 10 
    4、Range(“A1,A2”) = 10 或 Range(“A1:A2”) = 10
    5、Cells(1,1) = 10 或 Cells(1,”A”) = 10
    控件事件
       雙擊控件就可以對應事件代碼。
        格式代碼:
    Private Sub CommandButton1_Click()
    ‘deal event
    End Sub
    Validation(List)
      加入到list:
      set r1 = range(“A1:A5”)
      Dim formula as string
      formula = “=$A$1:$A$5”
        r1.Validation.Delete
        r1.Activate
      With r1.Validation
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, Formula1:=formula
             .InCellDropdown = True
             .IgnoreBlank = True
             .ShowError = False
        End With
    操作數據庫
    數據對象(ADO)
       這里數據對象采用ADO技術,可以通過工具添加對應的引用
    建立連接
       代碼:ConnectString = “Driver={SQLSERVER};Server=10.162.130.85;Database=CAPEX;UID=Capex_User;pwd=capex;"
    Set Connector = New ADODB.Connection
    Connector.ConnectionString = ConnectString
    Connector.Open
      

  2.   

    连Access
    Function Getconnection() As ADODB.Connection
    Dim adoConnection As ADODB.Connection
    Set adoConnection = New ADODB.Connection
    Dim sqlConnection As String
    'sqlConnection = "Driver={SQL SERVER};Server=;DataBase=;Uid=;Pwd=;"
    sqlConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test.mdb;Persist Security Info=False"
    adoConnection.ConnectionString = sqlConnection
    On Error GoTo err1
    adoConnection.Open
    Set Getconnection = adoConnection
    err1:
        If Err.Number <> 0 Then
            Set Getconnection = Nothing
        End If
    End Function
    操作數據庫
    -- 新增数据
    Dim conn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim sql As String
    Set conn = Me.Getconnection()
    Set cmd = New ADODB.Command
    sql = "INSERT INTO Table1(id,name) VALUES('" & [L5] & "','" & [L6] & "')"
    With cmd
        .CommandText = sql
        .CommandType = adCmdText
        .ActiveConnection = conn
        .Execute
    End With
    数据更新、删除同理
    数据绑定datagrid
    Dim conn As ADODB.Connection
    Dim rs  As ADODB.Recordset
    Dim sql As String
    sql = "SELECT * FROM Table1"
    Set conn = Me.Getconnection()
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open sql, conn, adOpenStatic, adLockOptimistic
    Set DataGrid1.DataSource = rs
    DataGrid1.Refresh
    conn.Close
    擴展
    VBA 不僅僅用在 Excel 還用在對應 Office 系列的軟件中 Word,PowerPoint等。
      

  3.   

    1、 分类统计&#61664;PivotTable
    Function RunSubTotal(sourceType As XlPivotTableSourceType, SourceData As String, _
    DestinationRange As Range, tableName As String, rowFieldName As String, colFieldName As String, dataFieldName() As String)
    Dim pCache As PivotCache
    If ActiveSheet.PivotTables.Count < 1 Then
        Set pCache = ActiveWorkbook.PivotCaches.Add(sourceType, SourceData:=SourceData)
        pCache.CreatePivotTable TableDestination:=DestinationRange, tableName:=tableName
    With ActiveSheet.PivotTables(tableName)
        .SmallGrid = False
        With .PivotFields(rowFieldName)
            .Orientation = xlRowField
            .Position = 1
        End With
        With .PivotFields(colFieldName)
            .Orientation = xlColumnField
            .Position = 1
        End With
        Dim i As Integer
        For i = 1 To UBound(dataFieldName)
            With .PivotFields(dataFieldName(i))
            .Orientation = xlDataField
            .Position = 1
        End With
        Next i
    End With
    Else
        ActiveSheet.PivotTables(tableName).RefreshTable
    End If
    End Function
    2、 对工作簿Workbook进行编程
    ● Workbook是什么?
    ● Workbook 属性,方法,事件
    ● Workbook之间数据交互
    Workbooks("book1.xls").Sheets(1).Cells(1, 1)
    ● 在