我試圖將數據從一個Excel工作表複製到另一個工作表,但粘貼目標需要是一個變量。在VBA-Excel中粘貼變量位置中的數據
本質上,我想要做的是打開兩個Excel表。在第一片材,將有一些字符串,其座標我保存這樣的:
sCurrentAddress = Selection.Address(True, True, xlA1, True)
基於已經填充表2的數據,一種算法整齊地找到所期望的粘貼位置和如下保存這些座標:
sDestinationAddress = Selection.Address(True, True, xlA1, True)
然後,我喜歡做的是從第一頁中的信息粘貼到第二如下:
Selection.Copy (sDestinationAddress)
但我收到錯誤1004:運行時錯誤:選擇範圍類的方法失敗。
現在,我工作的第一個值正好是A4,而當我將鼠標懸停我的鼠標移到「sDestinationAddress」,它表明我保存在sDestinationAddress值 '[exampleFile.xlsx]Sheet 1'!$A$4
宏失敗,除非我插上這樣的實際值:
'Selection.Copy (Worksheets(1).Range("A4"))
什麼我需要做的,用我的sDestinationAddress作爲Selection.Copy的說法?
(對不起這個漫長而仍然口齒不清,昨天是字面上我第一次看的Visual Basic。)
關於算法: 我有144個不同的頁眉標記中的信息6排以下。例如,我將數據從一個標題爲:Inventory_S1_1的列移動到一個新的電子表格。在這張表上的'S1_1'意味着另一張表:S =鑽石,1 =黑色,_1 =播放器1.所以我的算法找到一個它還沒有處理的頭(假設這裏是Inventory_S1_1是它沒有處理的第一個頭)處理),複製標題下方的列,在新電子表格中找到與玩家1的黑鑽石相對應的位置,然後進行粘貼。由於模板是手工製作的,因此粘貼算法可以正常工作,但是由於搜索潛在的混亂數據,搜索算法會迷失方向尋找標題。
問題是返回到工作表上的原始數據。
懸停我的鼠標,我稱之爲設置sCurrentAddress = Selection
表明,我已經貼了sDestinationAddress = 0
而sCurrentAddress= Inventory_S1_2
一旦我轉移到第二個標題,然後後我相當肯定這是完全有問題的線路:
Set rCurrentRange = .Find(What:=sCurrentAddress, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
我遵循
Application.Goto rCurrentRange, True ActiveCell.Select Selection.Offset(-1, 1).Select Set sCurrentAddress = Selection
這是這條線,我正在尋找下一個報頭。當我嘗試使用精確的座標時,這個.Find似乎可以工作,但現在它找到了0(sDestinationAddress)的第一個實例,這是複製材料中的第一個值。由於它總是複製0,然後查找第一個0,它從不查找下一個標題。
我意識到Range對象具有.Address屬性,但我不知道在這種情況下它是否會有所幫助。
這確實完成了任務,但現在我失去了「我的地方」。該變量似乎被替換爲單元格的值,並且座標不存在。我需要從Sheet1複製下一列,並將其放在Sheet2的不同位置。也許我也可以爲地址製作一個變量。 – emmagras 2012-07-05 20:46:42
下一欄是'rngSrc.Offset(0,1)' – 2012-07-05 21:34:52
這是一個怎樣的問題?你正試圖將一個單元格的內容複製到另一個單元格,不是嗎? – 2012-07-05 21:44:50