我正在处理一个宏,它执行一些数学计算并将数据导出到同一个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行中的数据数据和奇怪的是,当我编译它并使用断点评估它时,我在开发人员模式下运行此宏时非常正常。
唯一的问题是在设计模式下将数据复制到第33行。
不确定,为什么会遇到这个问题。
答案 0 :(得分:3)
尝试删除Select
和ActiveCell
方法。并添加对工作表的引用。
,例如,替换
Range("H" & LastCellRowNumber).Select
ActiveCell.FormulaR1C1 = "='Price Sheet'!R11C2"
与
Sheet1.Range("H" & LastCellRowNumber).FormulaR1C1 = "='Price Sheet'!R11C2"
答案 1 :(得分:1)
您正在根据错误的工作表计算 LastCellRowNumber 。替换:
Set LastCell = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp)
使用:
Set LastCell = Sheets("WJ LOGS").Cells(Rows.Count, "B").End(xlUp)