vba小程序报"自动化(Automation)错误如何处理?

vba小程序报"自动化(Automation)错误如何处理?,第1张

首先,如果是做为举陵弯 Worksheet_Change 事件代码,那么 For ... Next 循环中的第一行代码就会引起无限递归错误。

这句代码是 Cells.Delete ,一但执行,就会再次触发 Worksheet_Change 事件,开始嵌套运行事件过程,然后到了这一行,又将触发 Worksheet_Change 事件汪迅,……,无限递归下去。

应当在事件过程的第一句中添加:

Application.EnableEvents = False

禁止VBA响应任何事正闷件,保证后续代码正确运行。

然后在事件过程最后一句添加:

Application.EnableEvents = True

恢复VBA对事件的响应。

Sub 合并至总表()

 Dim Rng As Range, Rng1 As Range, Rng2 As Range, Sh As Worksheet

 Dim Dic As Object, i1&, j1&, i2&, j2&, K1$, K2$, K3$, i0&

 K1 = "水果": K2 = "纯卖其他1": K3 = "其他2"

 Set Dic = CreateObject("Scripting.Dictionary")

 Application.ScreenUpdating = False

 Application.DisplayAlerts = False

 Application.EnableEvents = False

 For Each Sh 冲雹In Worksheets

  Dic(Sh.Name) = ""

 Next Sh

 If Not Dic.exists("总表") Then

  Worksheets.Add before:=Worksheets(1)

  ActiveSheet.Name = "总表"

 Else

  Worksheets("总表").Cells.ClearContents

 End If

 i0 = 0

 With Worksheets("总表")

  For Each Sh In Worksheets

   If Sh.Name <> .Name Then

    Set Rng = Sh.Cells.Find(what:=K1)

    '总表采用第一个分表的两行表头

    If (Not Rng Is Nothing) And i0 = 0 Then

     Rng.Resize(2, 9).Copy .Cells(1, 1)

     i0 = 2

     j1 = 3: j2 = 3

    End If

    Set Rng1 = Sh.Cells.Find(what:=K2)

    Set Rng2 = Sh.Cells.Find(what:=K3)

    If Rng Is Nothing Or Rng1 Is Nothing Or Rng2 Is Nothing Then

    Else

     Set Rng = Rng.Offset(i0, 0)

     .Cells(j1, 1).Resize(Rng1.Row - Rng.Row, 5) = Rng.Resize(Rng1.Row - Rng.Row, 5).Value

     .Cells(j2, 6).Resize(Rng2.Row - Rng.Row, 4) = Rng.Offset(0, 5).Resize(Rng2.Row - Rng.Row, 散裤帆4).Value

     j1 = j1 + Rng1.Row - Rng.Row

     j2 = j2 + Rng2.Row - Rng.Row

    End If

   End If

  Next Sh

  .Cells(1, 1).Resize(Application.WorksheetFunction.Max(j1, j2) - 1, 9).Borders.LineStyle = xlContinuous

 End With

 Application.EnableEvents = True

 Application.DisplayAlerts = True

 Application.ScreenUpdating = True

 Set Dic = Nothing

End Sub

方法/步骤:

1.首先我们打开表格,在表格里制作三个框。

2.分别为:中奖察郑名单、中奖编号轮行和中奖人。

3.在中奖编号旁边的框里,输入函数:RANDBETWEEN()。在括号里,填入参与的人数。

4.在中奖人下面的框里,填入函数:VLOOKUP()。

5.在括号里“选中抽奖名单——逗号——选择2(姓名)——逗号——FALSE精确匹配。腊没哗然后回车


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12335891.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存