VBA将数据保存在另一张纸上

Posted

技术标签:

【中文标题】VBA将数据保存在另一张纸上【英文标题】:VBA to save data on another sheet 【发布时间】:2017-05-10 16:49:53 【问题描述】:

我正在使用 VBA 将数据复制并保存在另一个工作表上,即“数据”。数据已保存,但第一次保存在错误的位置,即范围。它跳了 50 行。在第二次及以后,它保存在正确的位置。你能告诉我我的错误吗]1

Sub Save_Click()

' Save Pay_Slip on "Data"Sheet

Application.ScreenUpdating = False
Dim copySheet As Worksheet
Dim pasteSheet As Worksheet
Dim LR As Long
Dim last As Long

Sheets("Data").Unprotect Password:=""
Sheets("Pay_Slip").Unprotect Password:=""

LR = Sheets("Pay_Slip").Range("B500").End(xlUp).Row
last = Sheets("Data").Range("E" & Rows.Count).End(xlUp).Row

Set copySheet = Worksheets("Pay_Slip")
Set pasteSheet = Worksheets("Data")

Sheets("Data").Range("A" & last + 3).Value = 
Sheets("Pay_Slip").Range("Y3").Value
Sheets("Data").Range("B" & last + 3).Value = 
Sheets("Pay_Slip").Range("T3:V3").Value
Sheets("Data").Range("C" & last + 3).Value = 
Sheets("Pay_Slip").Range("I2:K2").Value

copySheet.Range("A5" & ":AI" & LR + 2).Copy
pasteSheet.Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).PasteSpecial 
xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True

Sheets("Pay_Slip").Range("X2").Value = _
Sheets("Pay_Slip").Range("X2").Value + 1

Sheets("Pay_Slip").Protect Password:=""
Sheets("Data").Protect Password:=""

End Sub

【问题讨论】:

我似乎在第 4 列 (E) 中找到最后使用的单元格,而不是该列的最后一个空白单元格! 这是因为您的“last”变量设置为查看列 E。要么将其更改为为每一行填充的列,要么尝试使用 UsedRange.Rows.Count。此外,编辑您的代码,使其正确显示,您可能会收到更多回复。 绝对按照@acvbasql 的建议使用 UsedRange.Rows.Count。这将为您提供绝对的最后一行非空白。 【参考方案1】:

第一次将数据放在 range("A4") 等中,这是因为您正在单独编写语句,然后您编写了代码以从 range("A5" & ":AI" & LR + 2) 所以它把数据放在正确的位置。如果您想将数据粘贴到范围(“W2”)中的工作表“数据”中,请忽略各个语句。

【讨论】:

以上是关于VBA将数据保存在另一张纸上的主要内容,如果未能解决你的问题,请参考以下文章

从范围循环中的每个单元格复制数据并将其粘贴到另一张纸上

[VBA FormulaArray将数据从一个表拖到另一个表

从一张纸复制数据并将其粘贴到另一张纸上

[从一个单元格获取值,并将其聚焦在另一张表上,Vba Excel

宏复制到另一张纸上的下一个空白行

将每个唯一值从一张纸复制并粘贴到另一张纸上