ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 655|回复: 2

[求助] 求大神帮我看看这段VBA哪里写错了,并求正确的VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-30 11:12 | 显示全部楼层 |阅读模式
本帖最后由 咯咯喵 于 2018-7-30 11:21 编辑

示例如附件,需要把“单子”里的内容填充到后面的表格里。

我的问题是:
1. 我在“单子”表格里设置了一个单击D列2-3000格会出现当日日期的宏,但是为什么整个表格都是单击出现日期呢?哪里出错了呢?
2. 在CTSR模版右上角有一个下拉菜单,数据来源是“单子”那个表格C列数据去掉重复项后的副表(AF列)。下拉菜单的内容不会被打印,我想在下拉菜单里选择数据后,把“单子”那个表格里对应的数据全部抓取到“CTSR模版”。要求是,每一页里只有一个Q-Tag No.(单子里的K列)。附件里的示例填充到“CTSR模版”应该有4页。

我目前的思路是,在单子那张表里,先把C列数据(与下拉菜单选的数据一致的)复制到A列,然后合同数据相同的单元格,把A列选中的单元格resize到column23,这些就是所有数据的来源。接下来在K列找数据,所有的数据都填到“CTSR模版”D13里,不一样的数据填到下一页,这样排出来4页;然后把2c-8c,8c-30C的E列到I列的数据填写到CTSR模版的19行后面,把“no requirement"的E列到I列的数据填写到CTSR模版的14行后面。

然后我试着写了一段宏,因为不知道”K列数据不同时填充到D13的下一页“怎么表达,先试着用2c-8c,8c-30C查找信息并填充到CTSR模版的19行后面。于是写了下面的宏:

Sub 填充()
'找到选择的CONSIGNMENT,并复制到A列
Sheets("单子").Select
Dim consign, consignmarker As Range, consignadd As String
Set consign = Sheets("单子").Range("c:c").Find(Sheets("CTSR模版").Range("E14").Value)
If Not consign Is Nothing Then
consignadd = consign.Address
Do
consign.Copy consign.Offset(, -2)
Set consign = Sheets("单子").Range("c:c").FindNext(consign)
If consign.Address = consignadd Then Exit Do
Loop
End If
'选中所有数据
With Sheets("单子").Range("a:a").SpecialCells(xlCellTypeConstants, 23)
Application.DisplayAlerts = False

        For i = 1 To .Count - 1
            If .Cells(i) = .Cells(i + 1) And Cells(i).Value <> "" Then .Cells(i).Resize(2, 1).Merge
        Next
      Application.DisplayAlerts = True
    End With
'以CTSR里的consignment为基
Set consignmarker = Sheets("单子").Range("a:a").Find(Sheets("CTSR模版").Range("E14").Value)
consignmarker.Resize(, 23).Select

With Selection
   
Dim temp1 As Range, tempadd1 As String
Set temp1 = .Find("2C-8C", LookIn:=xlValues)
If Not temp1 Is Nothing Then
tempadd1 = temp1.Address
Do
Set temp1 = .FindNext(temp1)

Sheets("CTSR模版").Range("A:F").Find("DUN No.", LookAt:=xlWhole).Offset(1, 0).Select
Selection.EntireRow.Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove
   

Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, -3).Value = temp1.Offset(, -5).Value
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, -2).Value = temp1.Offset(, -4).Value
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, -1).Value = temp1.Offset(, -3).Value
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, 0).Value = temp1.Offset(, -2).Value
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, 1).Value = temp1.Offset(, -1).Value

Loop While temp1.Address <> tempadd1
End If
End With

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-30 11:15 | 显示全部楼层
但是上面的宏运行的时候,只能找到一行数据,第二行数据就找不到了。不知道为什么。

求大神帮我看看哪里错了,或者指导一个更简单的思路。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-30 11:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
附件在这里楼。

另外,如果“单子”里K列为“2C-8C"就把对应的数据填充到temp2-8表中,如果是8C-30C就填充到temp8-30表中,如果是no requirement就不填充。这个怎么表达呢?

我想写一个宏,然后设置一个按钮在下拉菜单旁边,下拉菜单选好数据后按一下这个按钮,所有的数据就填充好并且打印成PDF了。

求大神指导。

示例.zip

40.96 KB, 下载次数: 0

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 07:02 , Processed in 0.021114 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表