簡體   English   中英

復制范圍並將粘貼轉置到包含單元格的行中

[英]Copy range and transpose paste into row that contains cell

我有一些我發現似乎有效但在更改一些內容后不再有效的代碼組合。 我試圖從一張紙(“Sheet1”)上的范圍復制值並將它們轉置到另一個(“Sheet2”)上。 問題是我只想將它們粘貼到 A 列中的值等於同一工作表上 ("B2") 中的值的行中。 此外,該值將在整個 A 列中重復,但我只需要將其粘貼到第 11 行和第 29 行之間的行。這是我目前所擁有的:

Sub PasteData()

Range("O3:O44").Select
    Selection.copy

Worksheets("Sheet2").Activate

Worksheets("Sheet2").Unprotect ("Password")

Dim nRow As Long
Dim nStart As Long, nEnd As Long

For nRow = 11 To 29
If Range("A" & nRow).Value = Range("b2").Value Then
nStart = nRow
Exit For
End If
Next nRow

For nRow = nStart To 29
If Range("a" & nRow).Value <> Range("b2").Value Then
nEnd = nRow
Exit For
End If
Next nRow
nEnd = nEnd - 1

Range("A" & nStart & ":AP" & nEnd).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True

Worksheets("Sheet2").Protect Password:="Password", DrawingObjects:=True, Contents:=True, Scenarios:=False
Worksheets("Sheet3").Activate

Range("B13").Select

End Sub

我在你的代碼中注意到你沒有引用Range("O3:O44") 因此,當您運行代碼時,它將選擇並復制活動工作表的Range("O3:O44")

為避免這種混淆,請盡可能避免使用.Select.Activate ,尤其是在處理多個工作表時。 引用范圍時,始終包括您要定位到的工作表。

所以而不是:

Range("O3:O44").Select
Selection.Copy

像這樣做:

Worksheets("Sheet1").Range("O3:O44").Copy 

現在要回答您的問題,您需要指出Range("O3:O44")來自哪個工作表。 然后在粘貼之前將該代碼移動到該行上。

'range to copy with sheet reference
Worksheets("Sheet1").Range("O3:O44").Copy
'range where previous range will be pasted, also with sheet reference
Worksheets("Sheet2").Range("A" & nStart & ":AP" & nEnd).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True

嘗試您的代碼后,這是您遇到的錯誤的解決方案。

暫無
暫無

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

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