Private dataValue As Variant ' 声明变量 dataValue 为 Variant 类型

Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' Worksheet 对象的 SelectionChange 事件 Dim dateValue As Date ' 声明变量 dateValue 为 Date 类型 TextBox1.Visible = False ' 设置 TextBox1 控件不可见 ListBox1.Visible = False ' 设置 ListBox1 控件不可见 TextBox1.Text = "" ' 将 TextBox1 控件中的文本清空 ListBox1.Clear ' 清空 ListBox1 控件中的列表项 With Target ' 使用 With 语句引用目标单元格 If .Count = 1 And .Row > 1 And .Row <= ListObjects(1).ListRows.Count + 2 Then ' 如果目标单元格是单个单元格且行号在 2 到 ListObjects(1).ListRows.Count+2 之间 If .Column = 13 Or .Column = 10 Then ' 如果目标单元格的列号为 13 或 10 dateValue = CalendarForm.GetDate ' 调用 CalendarForm 窗体中的 GetDate 函数获取日期值,存储在变量 dateValue 中 If dateValue > 0 Then ' 如果获取到日期值大于 0 .value = dateValue ' 将目标单元格的值设置为获取到的日期值 If Cells(.Row, 1).value = "" Then ' 如果目标单元格所在行的第一列单元格为空 Cells(.Row, 1).value = Get_Code("RK") ' 调用 Get_Code 函数获取一个编号,将其赋值给目标单元格所在行的第一列单元格 End If End If ElseIf .Column = 4 Then ' 如果目标单元格的列号为 4 TextBox1.Visible = True ' 设置 TextBox1 控件可见 TextBox1.Top = .Top ' 设置 TextBox1 控件的顶端位置与目标单元格的顶端位置相同 TextBox1.Left = .Left ' 设置 TextBox1 控件的左端位置与目标单元格的左端位置相同 ListBox1.Top = TextBox1.Top + TextBox1.Height + 1 ' 设置 ListBox1 控件的顶端位置为 TextBox1 控件的顶端位置加上 TextBox1 控件的高度再加 1 ListBox1.Left = .Left ' 设置 ListBox1 控件的左端位置与目标单元格的左端位置相同 TextBox1.Activate ' 激活 TextBox1 控件 If Sheet1.ListObjects(1).ListRows.Count > 0 Then ' 如果 Sheet1 列表中有行数 dataValue = Sheet1.ListObjects(1).DataBodyRange.value ' 将 Sheet1 列表中的数据存储在变量 dataValue 中 End If End If End If End With End Sub

Private Sub Textbox1_Change() ' TextBox1 控件的 Change 事件 Dim i As Integer, Text As String, value As String ' 声明变量 i 为整数型,Text 和 value 为字符串型 Text = TextBox1.Text ' 将 TextBox1 控件中的文本赋值给变量 Text If Text = "" Then ' 如果变量 Text 为空字符串 ListBox1.Visible = False ' 设置 ListBox1 控件不可见 Exit Sub ' 退出子程序 End If With ListBox1 ' 使用 With 语句引用 ListBox1 控件 .Clear ' 清空 ListBox1 控件中的列表项 For i = 1 To UBound(dataValue) ' 循环遍历变量 dataValue 中的元素 If dataValue(i, 3) Like "" & Text & "" Then ' 如果变量 dataValue(i, 3) 中包含变量 Text 的字符串 .AddItem ' 向 ListBox1 控件中添加一个新的列表项 .List(.ListCount - 1, 0) = dataValue(i, 2) ' 将变量 dataValue(i, 2) 的值赋值给 ListBox1 控件中新添加的列表项的第一列 .List(.ListCount - 1, 1) = dataValue(i, 3) ' 将变量 dataValue(i, 3) 的值赋值给 ListBox1 控件中新添加的列表项的第二列 .List(.ListCount - 1, 2) = dataValue(i, 4) ' 将变量 dataValue(i, 4) 的值赋值给 ListBox1 控件中新添加的列表项的第三列 .List(.ListCount - 1, 3) = dataValue(i, 5) ' 将变量 dataValue(i, 5) 的值赋值给 ListBox1 控件中新添加的列表项的第四列 .List(.ListCount - 1, 4) = dataValue(i, 6) ' 将变量 dataValue(i, 6) 的值赋值给 ListBox1 控件中新添加的列表项的第五列 .List(.ListCount - 1, 5) = dataValue(i, 7) ' 将变量 dataValue(i, 7) 的值赋值给 ListBox1 控件中新添加的列表项的第六列 .List(.ListCount - 1, 6) = dataValue(i, 1) ' 将变量 dataValue(i, 1) 的值赋值给 ListBox1 控件中新添加的列表项的第七列 End If Next .Visible = .ListCount > 0 ' 如果 ListBox1 控件中的列表项数大于 0,则设置 ListBox1 控件可见 End With End Sub

Private Sub ListBox1_DblClick(ByVal cancel As MSForms.ReturnBoolean) ' ListBox1 控件的 DblClick 事件 Dim Row As Integer ' 声明变量 Row 为整数型 With ListBox1 ' 使用 With 语句引用 ListBox1 控件 If .ListIndex = -1 Then Exit Sub ' 如果 ListBox1 控件中没有选中任何列表项,则退出子程序 Row = ActiveCell.Row ' 将当前活动单元格的行号赋值给变量 Row Cells(Row, 2).value = .List(.ListIndex, 6) ' 将 ListBox1 控件中选中的列表项的第七列的值赋值给当前活动单元格所在行的第二列 Cells(Row, 3).value = "=INDEX(试剂[货号],MATCH([@试剂ID],试剂[ID],),)" ' 将一个公式赋值给当前活动单元格所在行的第三列 Cells(Row, 4).value = "=INDEX(试剂[名称],MATCH([@试剂ID],试剂[ID],),)" ' 将一个公式赋值给当前活动单元格所在行的第四列 Cells(Row, 5).value = "=INDEX(试剂[厂家],MATCH([@试剂ID],试剂[ID],),)" ' 将一个公式赋值给当前活动单元格所在行的第五列 Cells(Row, 6).value = "=INDEX(试剂[规格型号],MATCH([@试剂ID],试剂[ID],),)" ' 将一个公式赋值给当前活动单元格所在行的第六列 Cells(Row, 7).value = "=INDEX(试剂[存放温度],MATCH([@试剂ID],试剂[ID],),)" ' 将一个公式赋值给当前活动单元格所在行的第七列 Cells(Row, 8).value = "=INDEX(试剂[单位],MATCH([@试剂ID],试剂[ID],),)" ' 将一个公式赋值给当前活动单元格所在行的第八列 Cells(Row, 15).value = "=SUMIF(出库[入库ID],[@ID],出库[数量])" ' 将一个公式赋值给当前活动单元格所在行的第 15 列 Cells(Row, 16).value = "=[@数量]-[@出库数量]" ' 将一个公式赋值给当前活动单元格所在行的第 16 列 If Cells(Row, 1).value = "" Then ' 如果当前活动单元格所在行的第一列单元格为空 Cells(Row, 1).value = Get_Code("RK") ' 调用 Get_Code 函数获取一个编号,将其赋值给当前活动单元格所在行的第一列单元格 End If .Visible = False ' 设置 ListBox1 控件不可见 TextBox1.Visible = False ' 设置 TextBox1 控件不可见 End With End Sub

VBA 代码逐句翻译:工作表选择改变事件、文本框改变事件和列表框双击事件

原文地址: https://www.cveoy.top/t/topic/lCAf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录