Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 创建一个循环,将特定范围内的值复制到另一个工作表中,该范围内的值与连续的contidions相匹配_Vba_Excel - Fatal编程技术网

Vba 创建一个循环,将特定范围内的值复制到另一个工作表中,该范围内的值与连续的contidions相匹配

Vba 创建一个循环,将特定范围内的值复制到另一个工作表中,该范围内的值与连续的contidions相匹配,vba,excel,Vba,Excel,我有一个名为“2017年时间报告”的工作簿,其中有12个工作表(每个工作表都有一年中每个月的名称,从“1月”到“12月”)和一个名为“ListFunc”的支持表。在此支持表中,我登记了我的同事的基本信息(从第2行开始),如下所示: a) 在第1列中,工人编号(变量“NFunc”); b) 在第2列中,工人的姓名(变量“name”); c) 在第3列中,工人的部门(变量“CodSector”)——从S1到S7 我打算创建一个程序,随后搜索每个部门代码(因为我每个部门有多个员工),它会将员工的编号和

我有一个名为“2017年时间报告”的工作簿,其中有12个工作表(每个工作表都有一年中每个月的名称,从“1月”到“12月”)和一个名为“ListFunc”的支持表。在此支持表中,我登记了我的同事的基本信息(从第2行开始),如下所示:

a) 在第1列中,工人编号(变量“NFunc”); b) 在第2列中,工人的姓名(变量“name”); c) 在第3列中,工人的部门(变量“CodSector”)——从S1到S7

我打算创建一个程序,随后搜索每个部门代码(因为我每个部门有多个员工),它会将员工的编号和姓名(与每个部门代码关联)复制到任何给定月份的工作表中。类似于:“搜索扇区S1,并为每个条目复制工人的编号和姓名”,然后“搜索扇区S2,并为每个条目复制工人的编号和姓名”,等等,直到我到达扇区S7

我试着做了一点调查,发现了一些解决方案,使我能够安装一个几乎可以正常工作的程序。如下所示(现在,我只定义变量“CodSector”,因为它是我在这段代码中唯一需要的变量):

子测试()
应用程序。工作簿(“2017年时间报告”)。激活
暗淡的CodAs范围
暗拷贝范围作为范围
将第一个地址设置为字符串
作为整数的Dim i
将行设置为整数
行=3
设置CodSector=工作表(“ListFunc”)。范围(范围(“C1”)、范围(“C”)和
行数)
“因此,如果我增加了一名新员工,那么在我下一次工作时就会考虑这一点
复制另一张月报表的范围
Dim ws,ws1作为变体
设置ws=工作表(“ListFunc”)
设置ws1=工作表(输入框(“插入完整月份”))
对于i=1到7
设置copyRange=CodSector.Find(“S”&i,,xlPart)
如果不是,那么copyRange什么都不是
firstAddress=copyRange.Address
做
ws1.范围(单元格(第3行)、单元格(第4行))。值=
Intersect(copyRange.EntireRow,ws.Columns(“A:B”)).Value
'因此,ws(工作表)中的相交结果
“ListFunc”)粘贴在ws1(工作表“[月份]的给定范围内
年份)
行=行+1
设置copyRange=CodSector.FindNext(copyRange)
在copyRange.AddressFirstAddress时循环
如果结束
接下来我
ws1.激活
端接头
我的问题如下:在表达式
ws1.Range(单元格(第3行),单元格(第4行)).Value=Intersect(copyRange.EntireRow,ws.Columns(“A:B”)).Value
-如果我将开头的“ws1”更改为“ws”(这意味着“ListFunc”工作表中的交集结果将粘贴到同一工作表中),代码运行完美,没有任何问题-但显然这不是我想要的。现在,它一直突出显示这一行,并给出以下错误:

运行时错误“1004”:应用程序定义的错误或对象定义的错误


如果有比我更专业的人能找出为什么这个错误不断出现并帮助我解决它,我们将不胜感激

将您的通用单元格引用完全限定为以下内容:

ws1.Range(ws1.Cells(Row, 3)

否则,它将假定
ActiveSheet
,这可能会导致问题。

尝试完全限定您的通用
Cells
引用如下内容:
ws1.Range(ws1.Cells(第3行)
-如果没有这一点,它会假定
ActiveSheet
,这可能会导致问题。您不能将这样的东西设置暗显
将ws、ws1设置为变量
。您应该使用
将ws设置为变量,将ws1设置为变量
为什么将它们设置为变量而不是
工作表
?您的输入框是否包含任何值?@braX:非常感谢,你刚刚解决了我的问题!我怎么才能付你一杯虚拟啤酒呢?:)谢谢你,真的谢谢你@布拉克斯:答案被接受!再次感谢!
ws1.Range(ws1.Cells(Row, 3)