VBA 代码逐句翻译:使用 SqlOperation 和 ListViewOperation 实现数据展示
Public SqlOperation As SqlOperation ' 声明一个名为 SqlOperation 的公共对象,该对象类型为 SqlOperation/nPublic ListViewOperation1 As ListViewOperation ' 声明一个名为 ListViewOperation1 的公共对象,该对象类型为 ListViewOperation/nPublic ListViewOperation2 As ListViewOperation ' 声明一个名为 ListViewOperation2 的公共对象,该对象类型为 ListViewOperation/nPublic ListViewOperation3 As ListViewOperation ' 声明一个名为 ListViewOperation3 的公共对象,该对象类型为 ListViewOperation/n/nPublic Function Get_Code(ByVal Number As String) As String ' 定义一个名为 Get_Code 的公共函数,该函数接受一个字符串类型的参数 Number,并返回一个字符串/n Get_Code = Number & WorksheetFunction.Text(Now, /'-yymmdd-hhssmm-/') & WorksheetFunction.RandBetween(1000, 9999) ' 将参数 Number、当前日期(格式为 -yymmdd-hhssmm-)和一个 1000 到 9999 之间的随机数拼接,并返回拼接后的字符串/nEnd Function/n/nPublic Sub UserForm1Show() ' 定义一个名为 UserForm1Show 的公共子过程/n Set SqlOperation = New SqlOperation ' 创建一个新的 SqlOperation 对象,并将其赋值给 SqlOperation 对象变量/n SqlOperation.ExcelConnectionString = ThisWorkbook.FullName ' 设置 SqlOperation 对象的 ExcelConnectionString 属性为当前工作簿的完整路径/n /n With UserForm1 ' 开始一个 With 块,指定 UserForm1 对象作为操作对象/n Set ListViewOperation1 = New ListViewOperation ' 创建一个新的 ListViewOperation 对象,并将其赋值给 ListViewOperation1 对象变量/n ListViewOperation1.ListView = .ListView1 ' 设置 ListViewOperation1 对象的 ListView 属性为 UserForm1 对象中的 ListView1 控件/n ListViewOperation1.HomePage = .CommandButton7 ' 设置 ListViewOperation1 对象的 HomePage 属性为 UserForm1 对象中的 CommandButton7 控件/n ListViewOperation1.Left = .CommandButton8 ' 设置 ListViewOperation1 对象的 Left 属性为 UserForm1 对象中的 CommandButton8 控件/n ListViewOperation1.Right = .CommandButton9 ' 设置 ListViewOperation1 对象的 Right 属性为 UserForm1 对象中的 CommandButton9 控件/n ListViewOperation1.LastPage = .CommandButton10 ' 设置 ListViewOperation1 对象的 LastPage 属性为 UserForm1 对象中的 CommandButton10 控件/n ListViewOperation1.Query = .CommandButton1 ' 设置 ListViewOperation1 对象的 Query 属性为 UserForm1 对象中的 CommandButton1 控件/n ListViewOperation1.Reset = .CommandButton2 ' 设置 ListViewOperation1 对象的 Reset 属性为 UserForm1 对象中的 CommandButton2 控件/n ListViewOperation1.ListControls.Add .TextBox1 ' 将 UserForm1 对象中的 TextBox1 控件添加到 ListViewOperation1 对象的 ListControls 集合中/n ListViewOperation1.ListControls.Add .TextBox2 ' 将 UserForm1 对象中的 TextBox2 控件添加到 ListViewOperation1 对象的 ListControls 集合中/n ListViewOperation1.QueryOnAction = /'AddListView1/' ' 设置 ListViewOperation1 对象的 QueryOnAction 属性为 /'AddListView1/'/n ListViewOperation1.DisplayCount = 39 ' 设置 ListViewOperation1 对象的 DisplayCount 属性为 39/n /n Set ListViewOperation2 = New ListViewOperation ' 创建一个新的 ListViewOperation 对象,并将其赋值给 ListViewOperation2 对象变量/n ListViewOperation2.ListView = .ListView2 ' 设置 ListViewOperation2 对象的 ListView 属性为 UserForm1 对象中的 ListView2 控件/n ListViewOperation2.HomePage = .CommandButton11 ' 设置 ListViewOperation2 对象的 HomePage 属性为 UserForm1 对象中的 CommandButton11 控件/n ListViewOperation2.Left = .CommandButton12 ' 设置 ListViewOperation2 对象的 Left 属性为 UserForm1 对象中的 CommandButton12 控件/n ListViewOperation2.Right = .CommandButton13 ' 设置 ListViewOperation2 对象的 Right 属性为 UserForm1 对象中的 CommandButton13 控件/n ListViewOperation2.LastPage = .CommandButton14 ' 设置 ListViewOperation2 对象的 LastPage 属性为 UserForm1 对象中的 CommandButton14 控件/n ListViewOperation2.Query = .CommandButton3 ' 设置 ListViewOperation2 对象的 Query 属性为 UserForm1 对象中的 CommandButton3 控件/n ListViewOperation2.Reset = .CommandButton4 ' 设置 ListViewOperation2 对象的 Reset 属性为 UserForm1 对象中的 CommandButton4 控件/n ListViewOperation2.StartDate = .TextBox7 ' 设置 ListViewOperation2 对象的 StartDate 属性为 UserForm1 对象中的 TextBox7 控件/n ListViewOperation2.EndDate = .TextBox8 ' 设置 ListViewOperation2 对象的 EndDate 属性为 UserForm1 对象中的 TextBox8 控件/n ListViewOperation2.ListControls.Add .ComboBox1 ' 将 UserForm1 对象中的 ComboBox1 控件添加到 ListViewOperation2 对象的 ListControls 集合中/n ListViewOperation2.ListControls.Add .TextBox3 ' 将 UserForm1 对象中的 TextBox3 控件添加到 ListViewOperation2 对象的 ListControls 集合中/n ListViewOperation2.ListControls.Add .TextBox4 ' 将 UserForm1 对象中的 TextBox4 控件添加到 ListViewOperation2 对象的 ListControls 集合中/n ListViewOperation2.ListControls.Add .TextBox7 ' 将 UserForm1 对象中的 TextBox7 控件添加到 ListViewOperation2 对象的 ListControls 集合中/n ListViewOperation2.ListControls.Add .TextBox8 ' 将 UserForm1 对象中的 TextBox8 控件添加到 ListViewOperation2 对象的 ListControls 集合中/n ListViewOperation2.QueryOnAction = /'AddListView2/' ' 设置 ListViewOperation2 对象的 QueryOnAction 属性为 /'AddListView2/'/n ListViewOperation2.DisplayCount = 39 ' 设置 ListViewOperation2 对象的 DisplayCount 属性为 39/n /n Set ListViewOperation3 = New ListViewOperation ' 创建一个新的 ListViewOperation 对象,并将其赋值给 ListViewOperation3 对象变量/n ListViewOperation3.ListView = .ListView3 ' 设置 ListViewOperation3 对象的 ListView 属性为 UserForm1 对象中的 ListView3 控件/n ListViewOperation3.HomePage = .CommandButton15 ' 设置 ListViewOperation3 对象的 HomePage 属性为 UserForm1 对象中的 CommandButton15 控件/n ListViewOperation3.Left = .CommandButton16 ' 设置 ListViewOperation3 对象的 Left 属性为 UserForm1 对象中的 CommandButton16 控件/n ListViewOperation3.Right = .CommandButton17 ' 设置 ListViewOperation3 对象的 Right 属性为 UserForm1 对象中的 CommandButton17 控件/n ListViewOperation3.LastPage = .CommandButton18 ' 设置 ListViewOperation3 对象的 LastPage 属性为 UserForm1 对象中的 CommandButton18 控件/n ListViewOperation3.Query = .CommandButton5 ' 设置 ListViewOperation3 对象的 Query 属性为 UserForm1 对象中的 CommandButton5 控件/n ListViewOperation3.Reset = .CommandButton6 ' 设置 ListViewOperation3 对象的 Reset 属性为 UserForm1 对象中的 CommandButton6 控件/n ListViewOperation3.StartDate = .TextBox10 ' 设置 ListViewOperation3 对象的 StartDate 属性为 UserForm1 对象中的 TextBox10 控件/n ListViewOperation3.EndDate = .TextBox9 ' 设置 ListViewOperation3 对象的 EndDate 属性为 UserForm1 对象中的 TextBox9 控件/n ListViewOperation3.ListControls.Add .ComboBox2 ' 将 UserForm1 对象中的 ComboBox2 控件添加到 ListViewOperation3 对象的 ListControls 集合中/n ListViewOperation3.ListControls.Add .TextBox5 ' 将 UserForm1 对象中的 TextBox5 控件添加到 ListViewOperation3 对象的 ListControls 集合中/n ListViewOperation3.ListControls.Add .TextBox6 ' 将 UserForm1 对象中的 TextBox6 控件添加到 ListViewOperation3 对象的 ListControls 集合中/n ListViewOperation3.ListControls.Add .TextBox9 ' 将 UserForm1 对象中的 TextBox9 控件添加到 ListViewOperation3 对象的 ListControls 集合中/n ListViewOperation3.ListControls.Add .TextBox10 ' 将 UserForm1 对象中的 TextBox10 控件添加到 ListViewOperation3 对象的 ListControls 集合中/n ListViewOperation3.QueryOnAction = /'AddListView3/' ' 设置 ListViewOperation3 对象的 QueryOnAction 属性为 /'AddListView3/'/n ListViewOperation3.DisplayCount = 39 ' 设置 ListViewOperation3 对象的 DisplayCount 属性为 39/n /n NewlyListView .ListView1, Sheet4.ListObjects(/'ListView1/').DataBodyRange.value ' 调用 NewlyListView 子过程,并将 UserForm1 对象中的 ListView1 控件和 Sheet4 工作表中名为 /'ListView1/' 的列表对象的 DataBodyRange 区域的值作为参数传入/n NewlyListView .ListView2, Sheet4.ListObjects(/'ListView2/').DataBodyRange.value ' 调用 NewlyListView 子过程,并将 UserForm1 对象中的 ListView2 控件和 Sheet4 工作表中名为 /'ListView2/' 的列表对象的 DataBodyRange 区域的值作为参数传入/n NewlyListView .ListView3, Sheet4.ListObjects(/'ListView3/').DataBodyRange.value ' 调用 NewlyListView 子过程,并将 UserForm1 对象中的 ListView3 控件和 Sheet4 工作表中名为 /'ListView3/' 的列表对象的 DataBodyRange 区域的值作为参数传入/n /n AddListView1 ' 调用 AddListView1 子过程/n Addlistview2 ' 调用 Addlistview2 子过程/n Addlistview3 ' 调用 Addlistview3 子过程/n /n .Show 0 ' 显示 UserForm1 对象/n End With ' 结束 With 块/nEnd Sub/n/nPublic Sub NewlyListView(ByVal ListView As ListView, ByVal Arr As Variant) ' 定义一个名为 NewlyListView 的公共子过程,该子过程接受一个 ListView 类型的参数 ListView 和一个变体类型的参数 Arr/n Dim i As Integer ' 声明一个名为 i 的整数类型的变量/n With ListView ' 开始一个 With 块,指定 ListView 对象作为操作对象/n .View = lvwReport ' 设置 ListView 对象的 View 属性为 lvwReport/n .Gridlines = True ' 设置 ListView 对象的 Gridlines 属性为 True/n .FullRowSelect = True ' 设置 ListView 对象的 FullRowSelect 属性为 True/n .LabelEdit = lvwManual ' 设置 ListView 对象的 LabelEdit 属性为 lvwManual/n .AllowColumnReorder = True ' 设置 ListView 对象的 AllowColumnReorder 属性为 True/n .ColumnHeaders.Clear ' 清空 ListView 对象的 ColumnHeaders 集合/n For i = 1 To UBound(Arr) ' 遍历 Arr 数组中的每个元素/n .ColumnHeaders.Add Arr(i, 1), , Arr(i, 2), Arr(i, 3), 0 ' 将 Arr 数组中对应行的第二列、第三列、第四列的值添加到 ListView 对象的 ColumnHeaders 集合中,作为列标题/n Next/n End With ' 结束 With 块/nEnd Sub/n/nPublic Sub SetWidth() ' 定义一个名为 SetWidth 的公共子过程/n Dim i As Integer ' 声明一个名为 i 的整数类型的变量/n With UserForm1.ListView2.ColumnHeaders ' 开始一个 With 块,指定 UserForm1 对象中的 ListView2 控件的 ColumnHeaders 集合作为操作对象/n For i = 1 To .Count ' 遍历 ListView2 控件的 ColumnHeaders 集合中的每个元素/n Sheet4.ListObjects(/'ListView2/').ListRows(i).Range(, 3).value = .Item(i).Width ' 将 ListView2 控件中对应列的宽度设置为 Sheet4 工作表中名为 /'ListView2/' 的列表对象的第 i 行第三列的值/n Next/n End With ' 结束 With 块/nEnd Sub/n/nPublic Sub AddListView1() ' 定义一个名为 AddListView1 的公共子过程/n Dim sql As String, Arr As Variant ' 声明一个名为 sql 的字符串类型的变量和一个名为 Arr 的变体类型的变量/n With UserForm1 ' 开始一个 With 块,指定 UserForm1 对象作为操作对象/n sql = /'select ID,货号,名称,厂家,规格型号,存放温度,单位,入库数量,出库数量,库存数量 from [试剂$] where 1=1/' ' 定义一个 SQL 语句,用于从名为 /'试剂$/' 的工作表中查询数据/n If .TextBox1.Text <> /'/' Then ' 如果 UserForm1 对象中的 TextBox1 控件的值不为空/n sql = sql & /' and 名称 like /'%/' & .TextBox1.Text & /'%/'/' ' 将 TextBox1 控件的值作为查询条件添加到 SQL 语句中,查询名称包含 TextBox1 控件值的记录/n End If/n If .TextBox2.Text <> /'/' Then ' 如果 UserForm1 对象中的 TextBox2 控件的值不为空/n sql = sql & /' and 厂家 like /'%/' & .TextBox2.Text & /'%/'/' ' 将 TextBox2 控件的值作为查询条件添加到 SQL 语句中,查询厂家包含 TextBox2 控件值的记录/n End If/n SqlOperation.SelectCommand = sql ' 将 SQL 语句赋值给 SqlOperation 对象的 SelectCommand 属性/n If SqlOperation.GetRstDataBoolean(Arr) Then ' 如果 SqlOperation 对象的 GetRstDataBoolean 方法返回 True,说明查询成功/n ListViewOperation1.DataSource = Arr ' 将查询结果赋值给 ListViewOperation1 对象的 DataSource 属性/n Else ' 如果查询失败/n ListViewOperation1.CommandButtonEnabled_False ' 将 ListViewOperation1 对象的 CommandButtonEnabled 属性设置为 False,禁用相关按钮/n End If/n End With ' 结束 With 块/nEnd Sub/n/nPublic Sub Addlistview2() ' 定义一个名为 Addlistview2 的公共子过程/n Dim sql As String, Arr As Variant ' 声明一个名为 sql 的字符串类型的变量和一个名为 Arr 的变体类型的变量/n With UserForm1 ' 开始一个 With 块,指定 UserForm1 对象作为操作对象/n sql = /'select ID,货号,名称,厂家,规格型号,存放温度,单位,批号,有效期,入库人员,数量,日期,出库数量,库存数量 from [入库$] where 1=1/' ' 定义一个 SQL 语句,用于从名为 /'入库$/' 的工作表中查询数据/n If .TextBox3.Text <> /'/' Then ' 如果 UserForm1 对象中的 TextBox3 控件的值不为空/n sql = sql & /' and 名称 like /'%/' & .TextBox3.Text & /'%/'/' ' 将 TextBox3 控件的值作为查询条件添加到 SQL 语句中,查询名称包含 TextBox3 控件值的记录/n End If/n If .TextBox4.Text <> /'/' Then ' 如果 UserForm1 对象中的 TextBox4 控件的值不为空/n sql = sql & /' and 厂家 like /'%/' & .TextBox4.Text & /'%/'/' ' 将 TextBox4 控件的值作为查询条件添加到 SQL 语句中,查询厂家包含 TextBox4 控件值的记录/n End If/n If .TextBox7.Text <> /'/' Then ' 如果 UserForm1 对象中的 TextBox7 控件的值不为空/n sql = sql & /' and 日期>=#/
原文地址: https://www.cveoy.top/t/topic/lCAQ 著作权归作者所有。请勿转载和采集!