另一个宏仅适用于调试步骤模式问题

问题描述

大家好!

我一直在慢慢自学如何使用 vba,在取得了一些短暂的成功后,遇到了一个小问题。

我有两个命令按钮,一个插入新行并填充第 8 行的 4 个单元格,同时复制其下方行的数字和公式格式(日期和时间各一个单元格,两个固定文本单元格)。第二个按钮一旦被选中,它只会随时间填充一个单元格。

这两个宏在逐步调试时都按预期工作,但是当它们通过命令按钮运行时,我得到代码执行已被中断失败。

调试时,Range("A8:H8").SpecialCells(xlCellTypeConstants).ClearContents 行通常以黄色突出显示,但有时 Rows(9).EntireRow.Copy 是。我敢肯定,考虑到所涉及代码的简单性,我忽略了一些非常简单的东西。

我试图根据本网站和其他网站上的各种帖子重写台词,但没有成功。

以下是我拥有的全部代码,任何帮助将不胜感激!

Private Sub CommandButton1_Click()

Worksheets("Abyssal Chart").Rows(8).Insert Shift:=xlShiftDown

Rows(9).EntireRow.Copy

Rows(8).EntireRow.PasteSpecial xlPasteFormulasAndNumberFormats

Range("A8:H8").SpecialCells(xlCellTypeConstants).ClearContents

Range("A8").Value = Date

Range("B8").Value = "'T6"

Range("C8").Value = "'Electrical"

Range("D8").Value = Time

End Sub


Private Sub CommandButton2_Click()

Range("E8").Value = Time

End Sub

解决方法

插入行

标准模块Module1

Option Explicit

Sub InsertRow()
    With ThisWorkbook.Worksheets("Abyssal Chart")
        ' Insert new row.
        .Rows(8).Insert Shift:=xlShiftDown
        ' Copy formulas and number formats from row below.
        .Rows(9).Copy
        .Rows(8).PasteSpecial xlPasteFormulasAndNumberFormats
        Application.CutCopyMode = False
        ' Clear contents but 'preserve' formulas.
        .Range("A8:H8").SpecialCells(xlCellTypeConstants).ClearContents
        ' Write to new row.
        .Range("A8").Value = Date
        .Range("B8").Value = "'T6"
        .Range("C8").Value = "'Electrical"
        .Range("D8").Value = Time
    End With
End Sub

Sub InsertTimeStamp()
    ThisWorkbook.Worksheets("Abyssal Chart").Range("E8").Value = Time
End Sub

命令按钮所在的模块,例如Abyssal Chart

Option Explicit

Private Sub CommandButton1_Click()
    InsertRow
End Sub

Private Sub CommandButton2_Click()
    InsertTimeStamp
End Sub
,

您的脚本在我的 Excel 环境中运行良好。

如果多次运行宏时未做任何更改而出现错误:

  • 偶尔
  • 在不同的声明
  • 但不是在调试时,

我认为 Excel 在开始下一个语句之前没有完成一个语句。

当我对大量数据运行批处理脚本时,当许多单元格具有必须更新的公式或当我调整图表时,通常会发生这种情况。

当我遇到这种情况时,我通常会稍微延迟一下,看看错误是否仍然发生。

Application.Wait (Now + TimeValue("0:00:01"))

在您的情况下,您可以开始将语句放在“Rows(9)...”和“Rows(8)...”之间

Rows(9).EntireRow.Copy
Application.Wait (Now + TimeValue("0:00:01"))
Rows(8).EntireRow.PasteSpecial xlPasteFormulasAndNumberFormats

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...