簡體   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