领导想做一个功能,从售后任务信息表,能查到该任务下的明细内容,但我们目前售后任务信息是放在12#表,明细是放在2#表。
解决思路是先取12#表和2#表的数据,在同一个个表格内,通过任务编号进行关联。可以借用"在制物料任务查询"的框架进行开发
1、设计"售服任务"表格如下

2、打开文件先清除数据
建"openfile"的模块,代码如下:
vbnet
Option Explicit
Sub Auto_Open()
MsgBox "欢迎使用任务零件查询功能!" & vbCrLf & _
"第一次查询和刷新数据会较慢,请耐心等待。"
'Worksheets("查询汇总").Select
'ActiveSheet.CommandButton1.BackColor = RGB(255, 69, 0)
'ActiveSheet.CommandButton2.BackColor = RGB(255, 255, 0)
'ActiveSheet.CommandButton3.BackColor = RGB(0, 191, 255)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'售服任务时隐藏
ActiveSheet.ListBox1.Visible = False
ActiveSheet.CommandButton4.Visible = False
ActiveSheet.CommandButton1.Visible = False
ActiveSheet.CommandButton2.Visible = False
ActiveSheet.CommandButton3.Visible = False
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'清除"查询汇总"原有数据
Dim rowsnum As Long
Dim RNG As Range
Range("A4:Z7").value = ""
rowsnum = ActiveSheet.Range("A10").End(xlDown).Row
If rowsnum <> 0 Then
Set RNG = ActiveSheet.Range("A10:Z" & rowsnum)
RNG.Clear ' 清除数据
RNG.Borders.LineStyle = xlNone ' 移除边框
End If
ActiveWindow.FreezePanes = False '解除窗口冻结
''处理售服任务表
rowsnum = 0
Set RNG = Nothing
Worksheets("售服任务").Select
Range("A3:Z5000").value = ""
rowsnum = ActiveSheet.Range("A1").End(xlDown).Row
If rowsnum <> 0 Then
Set RNG = ActiveSheet.Range("A1:Z" & rowsnum)
RNG.Clear ' 清除数据
RNG.Borders.LineStyle = xlNone ' 移除边框
End If
End Sub
3、获取2#12#表
按钮"获取2#12#表格数据"代码
vbnet
Private Sub CommandButton1_Click()
getSHdate.GetDataFromSH
End Sub
模块"getSHdate"代表如下
vbnet
'''用于取另外工作表的数据
Sub GetDataFromSH()
Dim sourceWorkbook As Workbook
Dim sourceWorksheet As Worksheet
Dim targetWorkbook As Workbook
Dim targetWorksheet As Worksheet
Dim sourceRange As Range
Dim targetRange As Range
Dim MAXRGN As Long
Dim MAXRGN2 As Long
Dim ws As Worksheet
Dim i As Long
Dim SHname As String, SJname As String
'
''''''''''检查工作表是否存在,不存在则新建一个
sheetexist.sheetexist
'
' ' 设置要检查的工作表名称
SJname = "数据"
SHname = "售服任务"
'清除原有数据
ActiveWorkbook.Sheets(SJname).Visible = True
ActiveWorkbook.Sheets(SJname).Select
MAXRGN = Worksheets(SJname).Range("a" & Rows.Count).End(xlUp).Row
If MAXRGN <> 0 Then
Set RNG = ActiveSheet.Range("A1:AZ" & MAXRGN)
RNG.Clear ' 清除数据
RNG.Borders.LineStyle = xlNone ' 移除边框
End If
'打开提示框,进行数据处理
UserForm2.Show 0
Application.ScreenUpdating = False '禁止屏幕更新
Application.Interactive = False '禁止用户干预宏代码的执行
''''''''''取2#表信息
calldate.GetDataFromAnotherWorkbook
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''处理12#表数据
'清除售服任务数据
ActiveWorkbook.Sheets(SHname).Select
MAXRGN = Worksheets(SHname).Range("a" & Rows.Count).End(xlUp).Row
If MAXRGN <> 0 Then
Set RNG = ActiveSheet.Range("A1:AZ" & MAXRGN)
RNG.Clear ' 清除数据
RNG.Borders.LineStyle = xlNone ' 移除边框
End If
''''''''取12#表格信息
'' UserForm3.Show 0
'设置源工作簿、工作表、范围
f = Dir(ThisWorkbook.Path & "\12#售后配件任务单.xlsx")
If f = "" Then
MsgBox "12#表源文件不存,请查看"
Exit Sub
Else
Set sourceWorkbook = Workbooks.Open(ThisWorkbook.Path & "\" & f)
End If
Set sourceWorksheet = sourceWorkbook.Worksheets("在制") '获取源表格
' 如果源工作表有过滤,则显示所有数据
If sourceWorksheet.FilterMode = True Then
sourceWorksheet.ShowAllData
End If
''获取关键信息
Dim rngnew As Range
Set rngnew = sourceWorksheet.Range("B1:B5000").SpecialCells(xlCellTypeVisible)
Set rngnew = Union(rngnew, sourceWorksheet.Range("D1:E5000").SpecialCells(xlCellTypeVisible))
Set rngnew = Union(rngnew, sourceWorksheet.Range("G1:H5000").SpecialCells(xlCellTypeVisible))
Set rngnew = Union(rngnew, sourceWorksheet.Range("L1:P5000").SpecialCells(xlCellTypeVisible))
Set rngnew = Union(rngnew, sourceWorksheet.Range("S1:S5000").SpecialCells(xlCellTypeVisible))
'设置目标工作簿、工作表、范围
Set targetWorkbook = ThisWorkbook
Set targetWorksheet = targetWorkbook.Worksheets(SHname)
Set targetRange = targetWorksheet.Range("A3")
'复制数据
rngnew.Copy targetRange
'关闭源工作簿,并不保存更改
sourceWorkbook.Close SaveChanges:=False
'设置筛选
ActiveSheet.Range("A3:K3").Select
Selection.AutoFilter
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'获取库存
getkc.GetDataFromSQL
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Application.ScreenUpdating = True '允许屏幕更新
Application.Interactive = True '允许用户干预宏代码的执行
'Application.Visible = True
'' 隐藏工作表
ThisWorkbook.Sheets("数据").Visible = False
ThisWorkbook.Sheets("库存").Visible = False
ThisWorkbook.Sheets("到货").Visible = False
''转到"售服任务"表
Sheets(SHname).Select
ActiveWorkbook.Sheets(SJname).Visible = False
Set sourceWorkbook = Nothing
Set sourceWorksheet = Nothing
Set targetWorkbook = Nothing
Set targetWorksheet = Nothing
Set sourceRange = Nothing
Set targetRange = Nothing
Set ws = Nothing
End Sub
12#表的数据获取如下:

2#表的明细数据获取如下:

4、其中获取库存的功能,是从数据库中获取的
模块" getkc"代码如下:
vbnet
Sub GetDataFromSQL()
Dim sqlstr As String
Dim ws As Worksheet
Dim RNG As Range
Dim sheetname As String
Dim i As Long, MAXRGN As Long
Dim conn As ADODB.Connection '定义数据连接对象 ,需要添加ADO引用Microsoft ActiviteX Data Objects 2.8 Library
Dim dataset As ADODB.Recordset '定义记录集对象,需要添加ADO引用Microsoft ActiviteX Data Recordset Objects 2.8 Library
''''''''''检查工作表是否存在,不存在则新建一个
sheetexist.sheetexist
' ' 设置要检查的工作表名称
sheetname = "库存"
'清除原有数据
ActiveWorkbook.Sheets(sheetname).Visible = True
ActiveWorkbook.Sheets(sheetname).Select
MAXRGN = Worksheets(sheetname).Range("a" & Rows.Count).End(xlUp).Row
If MAXRGN <> 0 Then
Set RNG = ActiveSheet.Range("A1:AZ" & MAXRGN)
RNG.Clear ' 清除数据
RNG.Borders.LineStyle = xlNone ' 移除边框
End If
'连接数据库并执行SQL语句
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.100.3;Initial Catalog=AIS20150813141843;User ID=sa;Password=Chr_2016"
conn.Open
sqlstr = sqlstr + "SELECT t_icitem.fnumber 零件代码, t_icitem.fname 零件名称, t_icitem.fmodel 零件规格, t_Stock.FName 仓位, "
sqlstr = sqlstr + "t_StockPlace.fname 仓位, convert(float,sum(icinventory.fqty )) 数量 FROM icinventory "
sqlstr = sqlstr + "inner join t_icitem on ( icinventory.fitemid = t_icitem.fitemid ) and t_icitem.fnumber not like '3.10.%' "
sqlstr = sqlstr + "inner join t_item a on t_icitem.FItemID=a.FItemID "
sqlstr = sqlstr + "inner join t_Stock on icinventory.FStockID=t_Stock.FItemID "
sqlstr = sqlstr + "inner join t_StockPlace on icinventory.FStockPlaceID=t_StockPlace.FSPID "
sqlstr = sqlstr + "WHERE 1=1 and icinventory.fqty<>0 group by t_icitem.fitemid, t_icitem.fnumber,t_icitem.fname, "
sqlstr = sqlstr + "t_icitem.fmodel, t_Stock.FName,t_StockPlace.fname order by t_icitem.fnumber "
'执行查询并获取结果集
Set dataset = New ADODB.Recordset
dataset.Open sqlstr, conn
'将结果集保存到工作表
Set ws = ThisWorkbook.Worksheets(sheetname) '
'将标题写入工作表
For i = 0 To dataset.Fields.Count - 1
ws.Cells(1, i + 1).value = dataset.Fields(i).Name
Next i
ActiveSheet.Range("A2").CopyFromRecordset dataset
'关闭记录集和连接
dataset.Close
conn.Close
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''使用字典方法汇总零件库存数
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim MaxRow As Long
Dim key As Variant, value As Double
With ActiveSheet
' 获取数据范围
MaxRow = .Cells(Rows.Count, "A").End(xlUp).Row
i = 0
' 遍历数据并汇总
For i = 2 To MaxRow
key = .Cells(i, 1).value ' 零件代码为键
value = .Cells(i, 6).value '数量为值
' 键存在则累加,不存在则添加
If dict.Exists(key) Then
dict(key) = dict(key) + value
Else
dict.Add key, value
End If
Next i
'''另起两列汇总库存数量
i = 1
.Cells(1, 10).value = "零件代码"
.Cells(1, 11).value = "汇总数量"
For Each key In dict.Keys
i = i + 1
.Cells(i, 10).value = key
.Cells(i, 11).value = dict(key)
Next key
End With
'''''''''''''''''''''''''''''''''''''''''''
'释放对象
Set dataset = Nothing
Set conn = Nothing
Set ws = Nothing
Set RNG = Nothing
Set dict = Nothing
'将第一行设置成筛选
ActiveSheet.Range("A1:F1").AutoFilter
ActiveWorkbook.Sheets(sheetname).Visible = False
'''转到"查询汇总"表
Sheets("查询汇总").Select
End Sub
主要用的是汇总数量

5、售服任务的过滤

这里的未完成和延期是以预计完成日期为标准对比的。
代码如下:
vbnet
Private Sub OptionButton1_Click()
'全部
Dim rowsnum As Long
With Worksheets("售服任务")
rowsnum = .Range("A" & Rows.Count).End(xlUp).Row '总行数
If .AutoFilterMode Then .AutoFilterMode = False ' 清除原有筛选(避免冲突)
.Range("$A$3:$K$" & rowsnum).AutoFilter Field:=10 ''显示全部数据
End With
End Sub
Private Sub OptionButton2_Click()
'未完成
Dim rowsnum As Long
With Worksheets("售服任务")
rowsnum = .Range("A" & Rows.Count).End(xlUp).Row '总行数
If .AutoFilterMode Then .AutoFilterMode = False ' 清除原有筛选(避免冲突)
.Range("$A$3:$K$" & rowsnum).AutoFilter Field:=9, Criteria1:="=", Operator:=xlOr, Criteria2:="待提货" '预计完成日期为空,未完成的
End With
End Sub
Private Sub OptionButton3_Click()
'延期
Dim rowsnum As Long
With Worksheets("售服任务")
rowsnum = .Range("A" & Rows.Count).End(xlUp).Row '总行数
If .AutoFilterMode Then .AutoFilterMode = False ' 清除原有筛选(避免冲突)
.Range("$A$3:$K$" & rowsnum).AutoFilter Field:=10, Criteria1:="" '筛选J列实际完成日期为空的
.Range("$A$3:$K$" & rowsnum).AutoFilter Field:=9, Criteria1:=">=" & Date '筛选I列"预计完成日期"日期大于等于当前日期的数据
End With
End Sub
6、查询
vbnet
Private Sub CommandButton2_Click()
Dim selectedCell As Range
Dim cellValue As Variant
' 错误处理:未选择单元格
If TypeName(Selection) <> "Range" Then
MsgBox "请先选择一个单元格!", vbExclamation
Exit Sub
End If
' 错误处理:选择多个单元格
Set selectedCell = Selection
If selectedCell.Count > 1 Then
MsgBox "请选择单个单元格!", vbExclamation
Exit Sub
End If
' 获取单元格值
cellValue = selectedCell.value
' 创建并显示UserForm
With UserFormSH
.TextBox1.value = cellValue
.TextBox1.Enabled = False
.Show
End With
End Sub
窗体UserFormSH设计如下:

"确定"代码如下:
vbnet
Private Sub ButtonOK_Click()
Dim RNG As Range
Dim RGE1 As Range
Dim RGE2 As Range
Dim RGE3 As Range
Dim RGE4 As Range
Dim RGE5 As Range
Dim unionRGE As Range
Dim jcbh As String
Dim rowsnum As Long
Dim JCROWS As Long
Dim JCROWS2 As Long
Dim JCROWS3 As Long
Dim JCROWS4 As Long
Dim JCROWS5 As Long
Dim JCROWS6 As Long
Dim JCROWS7 As Long
Dim JCROWS8 As Long
Dim visibleCells As Range
Dim X As Variant
'清除"查询汇总"原有数据
Sheets("查询汇总").Select
Range("A4:D8").value = ""
rowsnum = ActiveSheet.Range("A10").End(xlDown).Rows
If rowsnum <> 0 Then
Set RNG = ActiveSheet.Range("A10:Z" & rowsnum)
RNG.Clear ' 清除数据
RNG.Borders.LineStyle = xlNone ' 移除边框
End If
ActiveWindow.FreezePanes = False '解除窗口冻结
'
'重新选择数据
'JCBH = InputBox("请录入机床编号,尽量完整录入,不要模糊查询")
jcbh = Me.TextBox1.value
If IsNull(jcbh) Or jcbh = "" Then
MsgBox "机床编号不能为空"
Exit Sub '终止执行代码
Else
jcbh = UCase(jcbh)
End If
'Application.ScreenUpdating = False '关闭屏幕更新
'ActiveSheet.CommandButton1.JCBH = 选择窗口.TextBox1.Value
ThisWorkbook.Sheets("数据").Visible = True
ThisWorkbook.Sheets("库存").Visible = True
Sheets("数据").Select '转到"数据"表
'如果筛选功能打开,则显示所有数据
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
'查找B列是否包含JCBH,如果有则过滤复制,没有则退出
Set RNG = ActiveSheet.Range("B:B").Find(jcbh)
If Not RNG Is Nothing Then
'填充相关数据
Dim RNG1 As Range
Dim RNG2 As Range
With Worksheets("数据")
'Set RNG1 = .Columns("AD:AD")
'Set RNG2 = .Columns("AE:AE")
'240510改成只看"配送单提供日期"
Set RNG1 = .Columns("AC:AC")
JCROWS = WorksheetFunction.CountIf(.Columns("B:B"), "*" & jcbh & "*") '包含JCBH的总行
JCROWS2 = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("AA:AA"), "/") '包含/的行数,有可能是组部件
JCROWS3 = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("AA:AA"), ">" & DateAdd("d", -999, Date)) '到货日期是有效日期的数量
JCROWS4 = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("AA:AA"), ">" & DateAdd("d", -999, Date), RNG1, ">" & Now() - 999) '配送日期是有效日期的数量
'JCROWS5 = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("AA:AA"), ">" & DateAdd("d", -999, Date), RNG1, "", RNG2, ">" & Now() - 999) '当配送日期为空时,看实际配送日期
JCROWS5 = 0
JCROWS6 = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("AA:AA"), "<>" & "/", .Columns("D:D"), "机加") '机加任务数量
JCROWS7 = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("AA:AA"), "<>" & "/", .Columns("D:D"), "采购") '采购任务数量
JCROWS8 = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("AA:AA"), "<>" & "/", .Columns("D:D"), "新核") '新核任务数量
End With
With Sheets("查询汇总")
.Range("C5").value = JCROWS - JCROWS2 '物料总项数
.Range("E5").value = JCROWS3 '已到货项数
.Range("G5").value = JCROWS4 + JCROWS5 '已配送
.Range("F5").value = (JCROWS3 / (JCROWS - JCROWS2)) * 100 & "%" '齐套率
.Range("H5").value = ((JCROWS4 + JCROWS5) / (JCROWS - JCROWS2)) * 100 & "%" '配送率
.Range("A7").value = JCROWS7 '机加任务数量
.Range("E7").value = JCROWS8 '新核任务数量
.Range("G7").value = JCROWS6 '采购任务数量
'''''''''''''''''''''''''''''''''2024115增加到货率图表数据
.Range("P16").value = "采购"
.Range("P17").value = "机加"
.Range("P18").value = "新核"
.Range("P19").value = "合计"
.Range("Q15").value = "总数"
.Range("R15").value = "到货"
.Range("S15").value = "辅助列"
.Range("T15").value = "到货率"
.Range("Q16").FormulaR1C1 = "=R[-9]C[-16]"
.Range("Q17").FormulaR1C1 = "=R[-10]C[-10]"
.Range("Q18").FormulaR1C1 = "=R[-11]C[-12]"
.Range("R16").FormulaR1C1 = "=R[-9]C[-17]-R[-9]C[-15]"
.Range("R17").FormulaR1C1 = "=R[-10]C[-11]-R[-10]C[-10]"
.Range("R18").FormulaR1C1 = "=R[-11]C[-13]-R[-11]C[-12]"
.Range("Q19").FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
.Range("R19").FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
.Range("T16").FormulaR1C1 = "=RC[-2]/RC[-3]"
.Range("T16").NumberFormatLocal = "0.00%"
.Range("T17").FormulaR1C1 = "=RC[-2]/RC[-3]"
.Range("T17").NumberFormatLocal = "0.00%"
.Range("T18").FormulaR1C1 = "=RC[-2]/RC[-3]"
.Range("T18").NumberFormatLocal = "0.00%"
.Range("T19").FormulaR1C1 = "=RC[-2]/RC[-3]"
.Range("T19").NumberFormatLocal = "0.00%"
.Range("S16").FormulaR1C1 = "1"
.Range("S17").FormulaR1C1 = "1"
.Range("S18").FormulaR1C1 = "1"
.Range("S19").FormulaR1C1 = "1"
.Range("P14").FormulaR1C1 = "=R[-9]C[-15]&""到货率"""
''''''''''''''''''''''''''''''''''''''''''''
End With
With Worksheets("数据")
rowsnum = .Range("A" & Rows.Count).End(xlUp).Row '总行数
'
datesumcg = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("D:D"), "采购", .Columns("S:S"), "<2958465")
Sheets("查询汇总").Range("C7").value = JCROWS7 - datesumcg
'ActiveSheet.Range("$A$1:$AJ$" & rowsnum).AutoFilter Field:=4
datesumsl = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("D:D"), "新核", .Columns("V:V"), "<2958465")
Sheets("查询汇总").Range("F7").value = JCROWS8 - datesumsl
datesumjj = WorksheetFunction.CountIfs(.Columns("B:B"), "*" & jcbh & "*", .Columns("D:D"), "机加", .Columns("Z:Z"), "<2958465")
Sheets("查询汇总").Range("H7").value = JCROWS6 - datesumjj
'ActiveSheet.ShowAllData
End With
''进行数据过滤,单选框选择,当OptionButton1选中时显示全部物料,当OptionButton2选中时显示未发物料
'如果筛选功能打开,则显示所有数据
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
''''''''''''''''''''''''''''''''''''''''''''''
'
ActiveSheet.Range("$A$1:$AJ$" & rowsnum).AutoFilter Field:=2, Criteria1:="*" & jcbh & "*" '选中数据范围内第2列,过滤值1为JCBH
Set RNG = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible, 12)
'rng.Copy ThisWorkbook.Sheets("SHEET2").Range("A1")
If Me.OptionButton2.value = True Then
RNG.AutoFilter Field:=27, Operator:=xlFilterValues, Criteria2:=Array(0, "12/31/1900")
Sheets("查询汇总").Range("A9").value = "未到物料:"
ElseIf Me.OptionButton1.value = True Then
RNG.AutoFilter Field:=27, Criteria1:="<>" & "/"
Sheets("查询汇总").Range("A9").value = "全部物料:"
ElseIf Me.OptionButton3.value = True Then
RNG.AutoFilter Field:=29, Criteria1:="", Operator:=xlOr, Field:=30, Criteria1:="" '10.12增加过滤出未配送的物料
Sheets("查询汇总").Range("A9").value = "未配送物料:" '
End If
''选择多区域数据
If rowsnum > 0 Then
Dim rngnew As Range
Set rngnew = ActiveSheet.Range("A1:H" & rowsnum).SpecialCells(xlCellTypeVisible)
Set rngnew = Union(rngnew, ActiveSheet.Range("M1:M" & rowsnum).SpecialCells(xlCellTypeVisible))
Set rngnew = Union(rngnew, ActiveSheet.Range("AA1:AA" & rowsnum).SpecialCells(xlCellTypeVisible))
Set rngnew = Union(rngnew, ActiveSheet.Range("AD1:AD" & rowsnum).SpecialCells(xlCellTypeVisible))
Set rngnew = Union(rngnew, ActiveSheet.Range("AG1:AG" & rowsnum).SpecialCells(xlCellTypeVisible))
Set rngnew = Union(rngnew, ActiveSheet.Range("AE1:AE" & rowsnum).SpecialCells(xlCellTypeVisible))
Sheets("查询汇总").Select '转到"查询汇总"表
ActiveSheet.Range("A10").Select '选择A4单元格
rngnew.Copy ActiveSheet.Range("A10")
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
With Sheets("查询汇总")
'取物料库存
rowsnum = 0
If Not IsEmpty(.Range("A11").value) Then
rowsnum = .Range("A11").End(xlDown).Row
Range("N11").Select
ActiveCell.Offset(-1, 0).value = "即时库存"
ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-8],库存!C[-4]:C[-3],2,FALSE),0)"
Selection.AutoFill Destination:=Range("N11:N" & rowsnum), Type:=xlFillDefault
End If
'冻结第11行
.Rows("11:11").Select
ActiveWindow.FreezePanes = True
End With
'文本框置空,并且隐藏窗体
Me.TextBox1.value = ""
UserFormSH.Hide
Else
MsgBox "机床编号" & jcbh & "不存在" '提示
ThisWorkbook.Sheets("数据").Visible = False '隐藏数据表
ThisWorkbook.Sheets("库存").Visible = False '隐藏库存表
Sheets("查询汇总").Select '转回"查询汇总"表
Exit Sub '终止执行代码
End If
moformat.moformat jcbh '格式设置传递JCBH
Worksheets("数据").ShowAllData '显示所有数据
Application.ScreenUpdating = True '开启屏幕更新
ThisWorkbook.Sheets("数据").Visible = False '隐藏数据表
ThisWorkbook.Sheets("库存").Visible = False '隐藏库存表
Set RNG = Nothing
Set RGE1 = Nothing
Set RGE2 = Nothing
Set RGE3 = Nothing
Set RGE4 = Nothing
Set RGE5 = Nothing
Set unionRGE = Nothing
Set visibleCells = Nothing
Sheets("查询汇总").Select '转回"查询汇总"表
End Sub
"清除"代码
vbnet
Private Sub ButtonDEL_Click()
Me.TextBox1 = ""
End Sub
"退出"代码:
vbnet
Private Sub ButtonEXIT_Click()
ThisWorkbook.Sheets("数据").Visible = False '隐藏数据表
ThisWorkbook.Sheets("库存").Visible = False '隐藏库存表
Unload Me
End Sub
6、运行效果
选择任务编号单元格,点击"查询数据"时

然后选择"全部物料","未到物料",还是"未配送物料"
选择全部物料时:

注意最后序号为801的那行,选择"未到物料"就少了,上面也少了几行,说明这些物料已经到了。这样方便按需要查询

"返回"按钮的代码就是返回"信服任务"表。