簡體   English   中英

將數據粘貼到VBA-Excel中的可變位置

[英]Pasting data in variable locations in VBA-Excel

我正在嘗試將數據從一個Excel工作表復制到另一個工作表,但是粘貼目標需要是一個變量。

本質上,我想做的是打開兩個Excel工作表。 在第一張紙上,將有一些字符串,我將其保存如下:

sCurrentAddress = Selection.Address(True, True, xlA1, True)

基於已經在Sheet 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的參數,我需要做什么?


(很抱歉,這冗長而又不清晰,昨天確實是我第一次看視覺基礎。)

關於算法:我有144個不同的標頭來標記下面6行中的信息。 例如,我將數據從標題為Inventory_S1_1的列移動到新的電子表格。 一張紙上的'S1_1'代表另一張紙:S = Diamond,1 =黑色,_1 =玩家1。因此,我的算法找到了一個尚未處理的標頭(假設Inventory_S1_1是它尚未使用的第一個標頭) (已處理),復制標題下的列,在新電子表格中找到與播放器1的“黑鑽石”相對應的位置,然后粘貼。 由於模板是手工制作的,因此粘貼算法效果很好,但是由於搜索算法可能會發現混亂的數據,因此搜索算法無法找到標頭。

問題是返回到包含原始數據的工作表。
將鼠標懸停在我叫set sCurrentAddress = Selection顯示sCurrentAddress= Inventory_S1_2一旦我移至第二個標頭,然后粘貼sDestinationAddress = 0
我相當確定這是有問題的行:

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似乎可以工作,但是現在它.Find可以找到0的第一個實例(sDestinationAddress),這是復制材料中的第一個值。 因為它總是復制0,然后尋找第一個0,所以它從不查找下一個標頭。

我意識到Range對象具有.Address屬性,但是我不知道在這種情況下是否有幫助。

您可以直接使用范圍而不是使用地址

Dim rngSrc as Range, rngDest as range

Set rngSrc = Selection
'do your destination-finding thing
Set rngDest = Selection

rngSrc.Copy rngDest 'no need for parentheses here

編輯

您很少需要選擇范圍來使用它們,並且將實際范圍對象存儲在變量中幾乎總是比嘗試使用范圍地址更好。

如果需要保留特定單元格或范圍的坐標,則將其存儲在范圍變量中是最簡單的方法。

要記住的一件事是,范圍對象的默認屬性是“值”-這可以解釋為什么在單步執行代碼時將光標懸停在范圍變量上時會看到范圍的值-顯示的是值。

如果您只是將單元格值從一個位置復制到另一個位置,則即使兩個范圍的尺寸相同,您甚至不需要使用.Copy

rngDestination.Value = rngSource.Value 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM