[英]VBA Macro for Excel working incorrectly
我正在做一个宏,该宏进行一些数学计算并将数据导出到同一Excel工作簿中另一张纸的行中。 在开始时,我编写了一个宏,单击该宏可以将一些数据导出到excel工作表中的行,再次单击相同的按钮,它将用新数据替换/覆盖以前导出的行,但是我尝试更改宏,以便将数据导出到下一个可用行,而不是使用以下宏覆盖之前的数据
Sub WJArchive()
'
' WJArchive Macro
'
Dim LastCell As Range
Dim LastCellRowNumber As Long
Set LastCell = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp)
LastCellRowNumber = LastCell.Row + 1
Sheets("WJ LOGS").Select
Range("B" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R4C2"
Range("C" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R5C2"
Range("D" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R6C2"
Range("E" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R8C2"
Range("F" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R9C2"
Range("G" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R10C2"
Range("H" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R11C2"
Range("I" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R12C2"
Range("J" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R13C2"
Range("K" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R14C2"
Range("L" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R17C2"
Range("M" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R18C2"
Range("N" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R19C2"
Range("O" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R20C2"
Range("P" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R21C2"
Range("Q" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R22C2"
Range("R" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R23C2"
Range("S" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R26C2"
Range("T" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R27C2"
Range("U" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R28C2"
Range("V" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R29C2"
Range("W" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R30C2"
Range("X" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R31C2"
Range("Y" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R32C2"
Range("Z" & LastCellRowNumber).Select
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("B" & LastCellRowNumber).Select
End Sub
由于某些原因,无论最后一行可用什么,上述宏均会在单击按钮时将数据导出到excel工作表中的第33行,并在单击下一个按钮时仅将第33行中的数据替换为新数据,奇怪的是当我编译该宏并使用断点对其进行评估时,当我在开发人员模式下运行此宏时,此方法非常有效。
唯一的问题是在设计模式下将数据复制到第33行。
不确定,为什么会出现此问题。
尝试删除Select
和ActiveCell
方法。 并添加对工作表的引用。
例如,更换
Range("H" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R11C2"
与
Sheet1.Range("H" & LastCellRowNumber).FormulaR1C1 = "='Price Sheet'!R11C2"
您正在基于错误的工作表计算LastCellRowNumber 。 更换:
Set LastCell = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp)
与:
Set LastCell = Sheets("WJ LOGS").Cells(Rows.Count, "B").End(xlUp)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.