VBA 开发中遇到的一些问题记录

  1. 当前sheet中定义一个数组:Dim DataSource() As String
  2. 判断动态数组是否初始化:Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long

使用:If SafeArrayGetDim(SelectedItems) <> 0 Then

  1. Excel初始化时执行函数:Private Sub Workbook_Open()
  2. 链接数据库读取数据:
Dim conn As New ADODB.Connection

    Dim rs As New ADODB.Recordset

    Dim cmd As New ADODB.Command

Dim sqlText As String

 

conn.Open "Connection String"

cmd.ActiveConnection = conn

cmd.CommandType = adCmdText

sqlText = "SELECT DISTINCT ult_parent_name FROM pm_own.hy_mastesure_sdb e, WHERE e.comp_sec_type_code NOT IN ('ABS','TSY') ORDER BY ult_parent_name "

cmd.CommandText = sqlText

   

Set rs = cmd.Execute

   

Do While Not rs.EOF

    ReDim Preserve DataSource(0 To Row)   ‘动态数组重定义

    DataSource(Row) = rs.Fields(0).Value

    Row = Row + 1

rs.MoveNext

Loop

conn.Close

 

  1. 创建带参数带返回值方法:

 

Private Function FilterDataSource(ByVal theText As String) As Variant

Dim dataArr As Variant

    Dim searchText As String

    Dim searchArr As Variant

    dataArr = DataSource

   

    If theText <> "" Then

        searchText = StrConv(theText, vbUpperCase)

        searchArr = Split(searchText, " ")

        For Each searchItem In searchArr

            If searchItem <> "" Then

               dataArr = VBA.Filter(dataArr, searchItem, True)

            End If

        Next searchItem

    End If

    FilterDataSource = dataArr

End Function

 

  1. KeyDown事件定义:

Private Sub tbxUltPatent_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

KeyCode=38     ‘up

KeyCode=40     ‘down

KeyCode=13      ‘Enter

  1. .ForeColor = &HFF&
  2. ItemClick事件:Private Sub ListView41_ItemClick(ByVal Item As MSComctlLib.ListItem)
  3. 清除sheet所有表单内容:ActiveSheet.Range("1:65536").ClearContents
  4. Range内容转换为数组:

Dim data As Worksheet

Set data = Sheets("Sheet2")

Dim dataArr As Variant

dataArr = WorksheetFunction.Transpose(data.Range("A1:A3432"))

  1. 判断数组是否越界:If LBound(initData) <= UBound(initData) Then
  2. 截取字符串中某一段:sqlTextName = Right(sqlTextName, Len(sqlTextName) - 3)

转载于:https://www.cnblogs.com/davisping/p/3413153.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值