1、 分类统计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)
● 在
连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等。
方法(函數)
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