[英]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.