我是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