欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

VBA统计字符串出现的次数

程序员文章站 2022-04-30 20:42:00
...

手机边亲爱的大家好!

今天我要给大家分享一个示例:统计出某个字符串在某表某字段中出现的次数。

 

大家先来看一下结果效果图:

 

VBA统计字符串出现的次数

 

先来讲一下原理,其实就是循环数据库中的所有表,然后找模糊查找,找到了就记录表名、表中的字段、统计出现的次数。

 

知道了原理就可以开始做了,今天我们换个套路,不要再之前一步一步的方式来教大家了,只告诉关键的步骤。

 

01建表

其中,我们要建一张表,用于保存统计的数据,具体的查看截图。

VBA统计字符串出现的次数

02添加函数

这次代码只分享给大家一个关键的函数,然后大家自己去调用一下

查找函数

 1Private Sub Snoop(SnoopFor As String)
 2
 3    On Error GoTo Snoop_Err
 4
 5    Dim DB As Database
 6    Dim S As Recordset
 7    Dim T As Recordset
 8    Dim td As TableDef
 9    Dim L As Integer
10    Dim F As Integer
11    Dim criteria As String
12    Dim occ As Long
13
14    Set DB = CurrentDb()
15    Set S = DB.OpenRecordset("tblSNOOP", DB_OPEN_DYNASET)
16
17
18    For L = 0 To DB.TableDefs.Count - 1
19
20        Set td = DB.TableDefs(L)
21
22
23        If Not td.Name Like "Msys*" Then
24            Set T = DB.OpenRecordset(td.Name, DB_OPEN_SNAPSHOT)
25
26            DoEvents
27
28            For F = 0 To td.Fields.Count - 1
29
30
31
32                criteria = "CStr('' & [" & td.Fields(F).Name & "]) Like '*" & SnoopFor & "*'"
33                T.FindFirst criteria
34
35                If Not (T.NoMatch) Then
36
37                    occ = 0
38                    Do While Not (T.NoMatch)
39                        T.FindNext criteria
40                        occ = occ + 1
41
42                    Loop
43
44                    S.AddNew
45                    S!Occurence = occ
46                    S!Table = td.Name
47                    S!Field = td.Fields(F).Name
48                    S.Update
49
50                End If
51
52            Next F
53
54        End If
55
56    Next L
57    Me.frmChild.Form.Requery
58    '    T.Close
59    S.Close
60    DB.Close
61
62Snoop_Exit:
63
64
65
66    Exit Sub
67
68Snoop_Err:
69    MsgBox Err.Description, vbCritical
70    Resume Snoop_Exit
71
72    Exit Sub
73
74End Sub

 

03测试

最后一步就是测试了,大家可以将按上面的步骤,在按钮控件的单击事件里来调用上面的函数。

 

VBA统计字符串出现的次数