首页 > 社交 > 科普中国

技巧篇:常用的vba代码汇总

常驻编辑 科普中国 2022-06-09 坐标轴   大前提   间距   数组   图表   模块   指标   常用   代码   业务   标题   技巧   目录
<> "" And i >= 1 Then arr = rst.getrows(): rst.movefirst If Not IsArray(arr) Then Extract = Array("无记录"): Exit Function ReDim r_arr(UBound(arr, 2) + 1, UBound(arr, 1)) i = rst.Fields.Count '#@@@@# 这里属于标题部分 For j = 1 To i r_arr(0, j - 1) = rst.Fields(j - 1).Name Next rst.movefirst rst.Close: cnn.Close Set rst = Nothing: Set cnn = Nothing '#@@@@# 二维转换 For j = 0 To UBound(arr, 2) For i = 0 To UBound(arr) r_arr(j + 1, i) = arr(i, j) Next Next Extract = r_arr 'Debug.Print "Over" Exit Function '#@@@@# 错误提醒,on error resume next,on error goto err_handle,on error goto line,on error goto 0 Err_Handle: Extract = Err.Description End Function Function Extract_Origin(sql As String, f As String) '#@@ 拽数,并返回数组 Dim cnn As Object, rst As Object Dim r_arr, arr Dim i, j '#@@@@# 大前提 On Error GoTo Err_Handle If sql = "" Then Extract_Origin = 0: Exit Function '#@@@@# 正常执行 Set cnn = CreateObject("adodb.connection") Set rst = CreateObject("adodb.recordset") ' cnn.Open "provider=microsoft.ace.oledb.12.0;extended properties='excel 12.0;HDR=YES';data source=" & f cnn.Open "provider=microsoft.ace.oledb.12.0;extended properties=excel 12.0;data source=" & f ' cnn.Open "provider=microsoft.ace.oledb.12.0;extended properties='excel 12.0;imex=1';data source= " & f '# imex=1 数据导入模式 'rst = cnn.Execute(sql) | rng.copyfromrecordset rst | rst.fields.count | rst.recordcount rst.Open sql, cnn, 3 If rst.RecordCount > 0 Then arr = rst.getrows ReDim r_arr(UBound(arr, 2), UBound(arr, 1)) For j = 0 To UBound(arr, 2) For i = 0 To UBound(arr) r_arr(j, i) = arr(i, j) Next Next Else r_arr = 0 End If Extract_Origin = r_arr rst.Close cnn.Close Set rst = Nothing Set cnn = Nothing 'Debug.Print "Over" Exit Function '#@@@@# 错误提醒,on error resume next,on error goto err_handle,on error goto line,on error goto 0 Err_Handle: Extract_Origin = Err.Description End Function Function CheckWkOpen(ByVal f) Dim tk As Workbook Dim status status = 0 For Each tk In Workbooks If StrComp(f, "book1.xls", 1) = 0 Then MsgBox f & " is open" Application.Windows(f).Visible = True Workbooks(f).Close False status = 1 End If Next End Function Function CheckFile(spath) Dim fso As Object Set fso = CreateObject("scripting.filesystemobject") CheckExists = fso.fileexists(spath) End Function Function CheckTable(wk As Workbook, zstr As String) Dim sht As Worksheet Dim status For Each sht In wk.Sheets If sht.Name = zstr Then status = 1 Exit For Else status = 0 End If Next CheckTable = status End Function Sub tt() ActiveWorkbook.RemovePersonalInformation = False End Sub Function 拽数(sql As String, f As String) '@@拽数,并返回数组 Dim cnn As Object, rst As Object Dim r_arr, arr Dim i, j Set cnn = CreateObject("adodb.connection") Set rst = CreateObject("adodb.recordset") cnn.Open "provider=microsoft.ace.oledb.12.0;extended properties=excel 12.0;data source= " & f On Error GoTo Err_Handle rst.Open sql, cnn, 3 i = rst.RecordCount If i <> "" And i >= 1 Then arr = rst.getrows(): rst.movefirst ReDim r_arr(UBound(arr, 2) + 1, UBound(arr, 1)) i = rst.Fields.Count For j = 1 To i r_arr(0, j - 1) = rst.Fields(j - 1).Name Next rst.movefirst rst.Close cnn.Close Set rst = Nothing Set cnn = Nothing For j = 0 To UBound(arr, 2) For i = 0 To UBound(arr) r_arr(j + 1, i) = arr(i, j) Next Next 拽数 = r_arr Set rst = Nothing Set cnn = Nothing Exit Function Err_Handle: Debug.Print Err.Description End Function

模块8:vba自动生成图表

Attribute VB_Name = "Generate_Chart"
Option Explicit

'=======================================下面为VBA自动生成部分=======================================
Sub Chart_Initial(C_row As Integer, C_column As Integer, ChartName As String, C_width As Integer, C_height)

'C_row,C_Column 存放行列位置,ChartName 存放表,C_width C_height 存放大小

Dim XTitle, YTitle
Dim Crng As Range, Xrng As Range, rng As Range
Dim sht As Worksheet, wb1 As Workbook
Dim MyChart As ChartObject
Dim R1, C, zstr

Set wb1 = ThisWorkbook
Set sht = wb1.Sheets("ChartData")

R1 = sht.ChartObjects.Count

If R1 > 0 Then
        For Each C In sht.ChartObjects
            zstr = C.Name
            If zstr = ChartName Then C.Delete
        Next
End If

'第一部分:创建一个新的图表Object事件
Set rng = sht.Cells(C_row, C_column)
Set MyChart = sht.ChartObjects.Add(rng.Left, rng.Offset(1, 0).Top, rng.Width * C_width, rng.Height * C_height)
With MyChart
        .Name = ChartName
End With

'第二部分:设置图表区格式
With MyChart.chart.ChartArea
        .Font.Name = "宋体"
        .Font.Size = 8
        .Font.ColorIndex = xlAutomatic
        .Border.LineStyle = 0
        .Interior.ColorIndex = xlAutomatic  '图表区填充
End With

'第三部分:设置绘图区格式
With MyChart.chart.PlotArea
        .Border.ColorIndex = 15
        .Border.Weight = xlThin
'        .Border.LineStyle = xlDot
        .Border.LineStyle = xlDot
        .Interior.ColorIndex = xlNone   '绘图区填充
End With

'第五部分:设置图表标题
MyChart.chart.HasTitle = True
With MyChart.chart.ChartTitle
        .Text = "    

相关阅读:

  • 魔幻工厂一字裤天猫旗舰店正式开售!三重好礼买到爽
  • 马桶两边留多少间距最为合适
  • 美国InfoComm
  • 班凯罗:若塔图姆在总决赛上出手更多中距离
  • 自驾游组队要注意的问题
  • 栏杆立杆间距规范要求 栏杆规范要求 栏杆长度规范 栏
  • 脸上有这5个特征,就是年纪越大越耐看的“抗老脸”,全中
  • 鼻头千万别再乱动了
  • 事关国庆假期出游,文旅部提醒!
  • 一个人开三辆车?奔驰测试无人驾驶卡车车队
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。