- 这将包括11个相同的工作表(10对站点的数据输入特定区域正在开发中,并且1“掌门人”它收集总数)
- 主工作表是开始日期改变的地方。当更改开始日期时,它会反映在10个数据输入工作表中。还有数字值表示开始日期有多远。
- 更改开始日期时,这些值需要随开始日期一起移动(即,如果开始日期是1月5日并且数据输入工作表上已有数据,并且开始日期更改为1月7日,则全部所有工作表的数据将需要2移动到右)
拟过程
我能得到的前两个函数的工作,但是这是这是造成一些悲伤的最后一个。
我想到的是一个程序化的复制粘贴。当更改开始日期时,它将转到第一个数据录入工作表,并将当前标题设置复制到“传输”工作表,保留该工作表的原始日期设置。然后它会删除数据录入工作清单中的数据。
下一步是转到第一个数据输入工作表(后台代码名以“Sz”开头),将数据输入的第一个数值匹配到Transfer工作表,检索数据并粘贴列数据放入新的位置。
当它完成数据录入工作表时,它会清除“传输”工作表,移动到下一个数据录入工作表,然后重复该过程。
问题
不幸的是,我写的是说这是发现的数值,当数值不存在的代码。然后它有时会显示一条错误消息,指出“代码执行已被中断”。
我一直在加班工作了大约十五个小时,除此之外还有整整一周的时间。我搜索了无数的潜在解决方案,并尝试了很多解决方法,但正式处于死胡同。我主要通过其他人的例子教会了我自己,所以我不是Excel VBA的专家。
如果我能得到匹配的功能正常工作,我相信我应该能够处理其余的,但更有效的方法的建议是非常值得欢迎的。
我不用太多论坛,但我会尝试粘贴下面的代码。
请让我知道我可以提供什么其他信息。
编辑:以下是工作簿的示例。要运行该功能,您将需要对 “工厂” 工作表(SZ001):Dropbox Link
代码:
Sub Test()
Dim sh As Worksheet, flg As Boolean
For Each sh In Worksheets
'FUNCTIONAL: If sh.CodeName Like "Sz0*" Then 'flg = True
If sh.CodeName = "Sz001" Then 'Isolating a single Worksheet for testing
'Copy original values and location to Transfer Worksheet
'DISABLED THIS SECTION WHILE TESTING
'sh.Select
'ActiveSheet.Range("H8:ABI460").Copy
'Worksheets("Transfer").Select
'ActiveSheet.Range("H8").PasteSpecial xlPasteValues
'Begin Matching Loop -THIS IS WHERE THE ISSUES ARE HAPPENING
Dim xlRange As Range 'Current sh Range
Dim xlSheet As Worksheet 'Current sh Worksheet
Dim xlCell As Range 'Cell function is currently looking at
Dim x As Range
Set xlSheet = sh
Set xlRange = xlSheet.Range("H6:ABI6")
For Each xlCell In xlRange
Set x = ActiveSheet.Cells.Find(what:=xlCell, after:=Worksheets("Transfer").Range("G6"), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext)
If Not x Is Nothing Then
MsgBox Cells(xlCell.Row, xlCell.Column) & "Found"
Else
MsgBox Cells(xlCell.Row, xlCell.Column) & "Not Found"
End If
Next xlCell
End If
Next
End Sub
欢迎SO !您能否提供小型测试数据集的前后样本? –
嗨!谢谢你的回应!我只是更新了文章以包含示例文件。我正在重建的原始工作簿之前没有此功能;之前的工作簿将“开始日期”通知保留在静态位置(总是列ND:NE),并且顶部的日期前后移动了6个月,因此数据从未移动。这将是该工作簿的新功能。如果您认为原始的(之前)工作簿可以帮助我将修改一个并上传给您。 – BH201
@ bh201我看了你的文件,代码开始寻找H6,它发现它 - 在H6。而不是搜索整个工作表匹配,也许你想从第8行搜索? – brettdj