繁体   English   中英

VBA Macro for Excel无法正常工作

[英]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行。

不确定,为什么会出现此问题。

尝试删除SelectActiveCell方法。 并添加对工作表的引用。

例如,更换

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM