Excel 需要用于验证现有数据和使用按钮创建新行的代码

Excel 需要用于验证现有数据和使用按钮创建新行的代码,excel,vba,Excel,Vba,我是VBA开发的新手。我试图在摘要工作簿中设置一个按钮,该按钮从输入文件中提取日期并将其放入摘要文件中。但我需要验证项目编号,因为订单并不总是相同的,可能会添加新的行。如果输入文件中的任何行不在摘要文件中,它将添加该行并高亮显示红色。例如 (输入文件.xlsx) 项目编号:\位置:\项目描述:\开始\结束 300-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气 405-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地

我是VBA开发的新手。我试图在摘要工作簿中设置一个按钮,该按钮从输入文件中提取日期并将其放入摘要文件中。但我需要验证项目编号,因为订单并不总是相同的,可能会添加新的行。如果输入文件中的任何行不在摘要文件中,它将添加该行并高亮显示红色。例如

(输入文件.xlsx)

项目编号:\位置:\项目描述:\开始\结束
300-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气-电气 405-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室-地下室 408(美国)(美国)(美国)(美国)(美国)(美国)(美国)(美国 414 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 400-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水-污水

(摘要文件.xlsm)

项目编号:\位置:\项目描述:\开始\结束
408 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 405 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 414 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

**“摘要文件.xlsm中的按钮”**

Summary File.xlsm现在看起来像:

项目编号:\位置:\项目描述:\开始\结束
408(美国)(美国)(美国)(美国)(美国)(美国)(美国)(美国)(美国)(美国)((美国)美国(美国)美国)(美国)美国)(美国(美国 405-地下室-04/01/14-03/31/15
414(美国)(美国)(美国)(美国)(美国)(美国)(美国)(美国)(美国)(美国 300“高亮显示红色”\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 400“高亮红色”\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

任何代码示例/帮助都将不胜感激。谢谢

以下是我到目前为止的情况:

Sub Compare(): Dim win As Worksheet, ws As Worksheet
Dim i As Long, s As Long, PNo As String, K, n As Long
Set win = Workbooks("InputFile.xlsx").Sheets("Sheet1")
Set ws = Workbooks("SummaryFile.xlsm").Sheets("Sheet1")

With CreateObject("Scripting.Dictionary")
s = win.Range("A:A").Find("*", , , , xlByRows, xlPrevious).Row
For i = 2 To s: PNo = Trim(win.Range("A" & i))
.Item(PNo) = i: Next i: K = .Keys()

s = ws.Range("A:A").Find("*", , , , xlByRows, xlPrevious).Row + 1
For n = LBound(K) To UBound(K)
For i = 2 To UBound(K) + 1: PNo = Trim(ws.Range("A" & i))
If K(n) = PNo Then
ws.Range("D" & i).Resize(1, 2).Value = _
win.Range("D" & .Item(K(n))).Resize(1, 2).Value
GoTo GetNext: End If: Next i

ws.Range("A" & s).Resize(1, 5).Value = _
win.Range("A" & .Item(K(n))).Resize(1, 5).Value
ws.Range("A" & s).Resize(1, 5).Interior.ColorIndex = 3
s = s + 1
GetNext: Next n
End With


End Sub

您是否必须创建一个名为“摘要文件”的新文件,其中包含新行?复制“输入文件”并与没有新行的摘要文件进行比较怎么样?您可以轻松使用条件格式规则突出显示“输入文件”中不在“摘要文件”中的行。欢迎使用StackOverflow,感谢您发布第一个问题。为了吸引最好的答案,被问的问题应该清楚你想要达到什么。它应该描述你为达到现在的状态所做的一切。有一个,请考虑阅读它和编辑你的问题更清楚你想要什么。请将您编写的代码发布到目前为止*