小编Mil*_*les的帖子

如何提高VBA宏代码的速度?

我没有太多编写宏的经验,因此需要这个社区的帮助来解决以下问题:

我的宏复制在一个工作表中的垂直范围内输入的值范围,然后将值水平(转置)粘贴到另一个工作表中.理论上它会将第一张表中的值粘贴到第二张没有内容的工作表的第一行.由于前五行具有内容,因此将值粘贴到第六行.运行宏时遇到的问题是我觉得它太慢了,所以我希望它运行得更快.

我有相同的宏做同样的事情,但相反将值粘贴到另一个工作表到第一行,它运行完美.

因此,我最好的猜测是第二个宏运行缓慢,因为它必须在第六行开始粘贴,前五行可能会有一些内容花费大量时间让宏通过(有很多单元格引用其他工作簿)以确定下一行的粘贴位置.这是我最好的猜测,因为我几乎不知道宏,我不能肯定问题是什么.

我特此向您提供宏的代码,并真诚地希望有人能告诉我是什么让我的宏变慢,并为我提供了如何让它运行得更快的解决方案.我认为一个解决方案可能是宏可能不应该考虑前五行数据并立即开始在第6行粘贴第一个条目.然后在下一次第7行等等.这可能是一个解决方案,但我不知道如何编写代码以便它会这样做.

感谢您花时间帮我找到解决方案,以下是代码:

Sub Macro1()
Application.ScreenUpdating = False

    Dim historyWks As Worksheet
    Dim inputWks As Worksheet

    Dim nextRow As Long
    Dim oCol As Long

    Dim myCopy As Range
    Dim myTest As Range

    Dim lRsp As Long

    Set inputWks = wksPartsDataEntry
    Set historyWks = Sheet11

      'cells to copy from Input sheet - some contain formulas
      Set myCopy = inputWks.Range("OrderEntry2")

      With historyWks
          nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
      End With

      With inputWks
          Set myTest = myCopy.Offset(0, 2)

          If Application.Count(myTest) > …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

9
推荐指数
3
解决办法
4万
查看次数

当纸张受到保护时,宏不起作用.运行宏返回运行时错误1004

我的工作簿中有三个宏可以正常工作.但是,当我保护任何工作表时,他们停止工作,我得到了一个run-time error 1004.

我试过按照我在网上找到的两条建议:

  • 在宏代码开始时取消保护,并在结束时保护;
  • 仅限用户界面)但运行时错误仍然存​​在.

我需要保护我的工作簿并让我的宏运行,我该怎么办?

宏1:

Sub Macro1()

Dim historyWks As Worksheet
Dim inputWks As Worksheet

Dim nextRow As Long
Dim oCol As Long

Dim myCopy As Range
Dim myTest As Range

Dim lRsp As Long

Set inputWks = Worksheets("Visit & Order Entry Form")
Set historyWks = Worksheets("Visit & Order Database")

'check for duplicate order ID in database
If inputWks.Range("CheckID2") = True Then
  lRsp = MsgBox("Clinic ID already in database. Update database?", vbQuestion + vbYesNo, "Duplicate …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

2
推荐指数
1
解决办法
5万
查看次数

标签 统计

excel ×2

excel-vba ×2

vba ×2