我是VBA的全新用户,并且正在尝试编写一个宏,以将特定数据从同一目录中的所有工作簿提取到主工作簿中。尝试使用变量选择一系列数据时,我遇到困难,因此我可以将数据复制并粘贴到主工作簿中。我一直在观看视频和通过论坛阅读,但似乎无法让宏工作。如何使用VBA中的两个变量来选择行的范围
我有一张Excel表格,列出A列中的员工,以及我想要复制的有关B,C,D,E和F列(在后续行中)员工的所有数据。因此,例如,第1行包含单元格A1中的第一个雇员,然后第2到第5行包含B到F列中的数据。第6行包含单元格A6中的下一个雇员的姓名,并且关于它们的数据位于第7到第9(BF栏)。我想复制第2-5行并将它们粘贴到主工作簿中,然后复制7-9并粘贴到主,8-14等等中。
我的第一次尝试是将两个变量定义为整数。然后我尝试在列A中找到第一名员工的姓名,然后选择之后的行,并将第一个变量设置为等于该行。然后找到第二名员工的名字,选择之前的行并设置变量2等于该行。然后使用这两个变量选择范围。下面是我的代码如下所示:
Sub SelectConsultantData()
Dim Consultant1 As Integer, Consultant2 As Integer
Dim ConsultantRange As Range
Columns("A:A").Select
Selection.Find(What:="Andrew", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Consultant1 = Rows(ActiveCell.Row).Select
Consultant1 = Consultant1 + 1
Columns("A:A").Select
Selection.Find(What:="Bob", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Consultant2 = Rows(ActiveCell.Row).Select
Consultant2 = Consultant2 - 1
Set ConsultantRange = Range(Consultant1, Consultant2).Select
End Sub
任何想法,我做错了什么,或者任何人能想到更好的办法吗?如果我需要提供进一步的背景,请让我知道。
在此先感谢您的帮助。
您的Consultant1&2变量需要声明为Range的第一件事。其次,整个结构保持不变...即, A1中的名字后跟B2中的信息:F5? – Marshall 2013-05-02 19:55:47
是的,整个结构保持不变。唯一改变的是每个员工的行数。因此,第一个员工姓名在A1中,该员工的信息是B2:F5(4行),员工2的姓名是A6,信息是B7:F9(2行),员工3的姓名是A10,信息B11 :F14(3行)等。一些员工只有一行或两行数据,其中一些数据的名称为40-50。 – Anthony 2013-05-02 20:25:35
一旦您确定并选择了第一名员工的范围,下一步是什么?是否将它复制到主工作簿中的新工作表中?在相同的格式?新格式? – Eddie 2013-05-03 08:57:45