簡體   English   中英

將新數據粘貼到工作表中時運行宏

[英]Run a Macro When New Data is Pasted into the Sheet

我對 VBA 很陌生,並試圖弄清楚下面的內容。

我希望我的子程序在 CB 工作表的單元格 A1 中粘貼新數據(或更改值)時運行。

第二個代碼在單獨運行時完美運行。 但是,在 A1 更改后插入第一個代碼以運行宏后,我收到“運行時錯誤 '91:對象變量或塊變量未設置”錯誤消息。 錯誤在此代碼行“SHT.Range("k" & I).Value = U.Offset(-1, 0)”處觸發

在單元格 A1 中粘貼或更改某些內容后,如何使第二個宏運行?

1.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A1:C" & ThisWorkbook.Worksheets("CB").UsedRange.Rows.Count)) Is Nothing Then
       Call LoopandIfStatement
    End If

End Sub

2.

Sub LoopandIfStatement()

Dim SHT As Worksheet
Dim I As Long
Dim O As Long
Dim U As Range

Set SHT = ThisWorkbook.Worksheets("CB")
MyLr = SHT.Cells(Rows.Count, 1).End(xlUp).Row

For I = 1 To MyLr

    If IsEmpty(SHT.Range("a" & I).Value) = False Then
        Set U = SHT.Range("A" & I)
        SHT.Range("k" & I).Value = SHT.Range("A" & I).Value
    Else
        SHT.Range("k" & I).Value = U.Offset(-1, 0)
    End If

Next I

For O = 2 To MyLr
    If SHT.Range("g" & O).Value = "Closing Balance" Then
        SHT.Range("l" & O).Value = SHT.Range("j" & O).Value
    End If
Next O

End Sub

崩潰很可能是由您的第二個過程啟動的更改觸發的 Change 事件引起的。 嘗試在執行該過程時抑制事件。

Application.EnableEvents = False
Call LoopAndIfStatement
Application.EnableEvents = True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM