gpt4 book ai didi

vba - 为什么我的 VBA 循环粘贴不正确的值?

转载 作者:行者123 更新时间:2023-12-04 20:05:09 25 4
gpt4 key购买 nike

我创建了一个循环,将数据从工作表复制并粘贴到另一个工作表中,但是我遇到了粘贴功能的问题——有时粘贴错误的数据,看似随机。我目前的代码是:

    Sub ACCPR_LOOP()

Dim wsACC_PR As Worksheet
Set wsACC_PR = ThisWorkbook.Sheets("ACC PR")
Dim wsPR_CALC As Worksheet
Set wsPR_CALC = ThisWorkbook.Sheets("PR - CALC")
Dim MyRange As Range
Dim MyCell As Range
Set MyRange = Range("A2:A145")

Application.ScreenUpdating = False
Columns("B:C").ClearContents

For Each MyCell In MyRange
MyCell.Copy
wsPR_CALC.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
wsPR_CALC.Range("B226,B228").Copy
MyCell.Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True

Next MyCell

End Sub

代码在 Col A 中所做的是一堆日期,它复制 A 中的日期,然后将其粘贴到另一个工作表中以更新下拉日期选择器并更改数据。然后将其中两个单元格复制并粘贴回原始工作表中,偏移量为 1 列。由于某种原因,有时会粘贴 A 中上一个日期的数据。例如,将 A17 中的日期复制并粘贴到日期选择器中,然后将正确的数据粘贴到 B17 中,但在下一步中,与 A17 相关的数据将粘贴到 B18 的下一行中。

如果重复该行:
MyCell.Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True

该代码有效,但这似乎效率很低。任何想法在我的代码中发生了什么以及如何修复它?

最佳答案

Set MyRange = Range("A2:A145")您还应该声明相应的工作表。例如。:

Set MyRange = Worksheets("MyNameIsWhat").Range("A2:A145")

否则,它将采用 ActiveWorksheetMyRange将分配给它。
Columns("B:C").ClearContents 也是如此.

应该是 Worksheets("TsakaTsakaSlimShaddy").Columns("B:C").ClearConents

关于vba - 为什么我的 VBA 循环粘贴不正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48809383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com