爱问知识人 爱问教育 医院库

RXCEL VBA "溢出堆栈空间 "请高手看看改改

首页

RXCEL VBA "溢出堆栈空间 "请高手看看改改

根据条件调用各SHEET的CommandButton1_Click。
有7个工作薄,每个工作薄有40个工作表,每个工作薄的最后一表宏接上另一个工作薄的第一个表的宏当运行到第5,或6个工作薄时,常提示错误:"溢出堆栈空间 "。
请看代码:(部分)
Sub Msheet30()

If Sheets("Sheet30").Range("T2") = "" Then
Sheets("Sheet31").Select
  Application.Run "aa6FAA1.xls!Sheet31.CommandButton1_Click"
Else

  Sheets("Sheet33").Select
  Application.Run "aa6FAA1.xls!Sheet33.CommandButton1_Click"
  End If

End Sub
Sub Msheet31()

If Sheets("Sheet31").Range("T2") = "" Then
Sheets("Sheet32").Select
  Application.Run "aa6FAA1.xls!Sheet32.CommandButton1_Click"
Else

  Sheets("Sheet33").Select
  Application.Run "aa6FAA1.xls!Sheet33.CommandButton1_Click"
  End If

End Sub
Sub Msheet32()

If Sheets("Sheet32").Range("T2") = "" Then
Sheets("Sheet33").Select
  Application.Run "aa6FAA1.xls!Sheet33.CommandButton1_Click"
Else

  Sheets("Sheet33").Select
  Application.Run "aa6FAA1.xls!Sheet33.CommandButton1_Click"
  End If

End Sub
Sub Msheet33()

If Sheets("Sheet33").Range("T2") = "" Then
Sheets("Sheet34").Select
  Application.Run "aa6FAA1.xls!Sheet34.CommandButton1_Click"
Else

  Sheets("Sheet37").Select
  Application.Run "aa6FAA1.xls!Sheet37.CommandButton1_Click"
  End If

End Sub
Sub Msheet34()

If Sheets("Sheet34").Range("T2") = "" Then
Sheets("Sheet35").Select
  Application.Run "aa6FAA1.xls!Sheet35.CommandButton1_Click"
Else

  Sheets("Sheet37").Select
  Application.Run "aa6FAA1.xls!Sheet37.CommandButton1_Click"
  End If

End Sub
Sub Msheet35()

If Sheets("Sheet35").Range("T2") = "" Then
Sheets("Sheet36").Select
  Application.Run "aa6FAA1.xls!Sheet36.CommandButton1_Click"
Else

  Sheets("Sheet37").Select
  Application.Run "aa6FAA1.xls!Sheet37.CommandButton1_Click"
  End If

End Sub
Sub Msheet36()

If Sheets("Sheet36").Range("T2") = "" Then
Sheets("Sheet37").Select
  Application.Run "aa6FAA1.xls!Sheet37.CommandButton1_Click"
Else

  Sheets("Sheet37").Select
  Application.Run "aa6FAA1.xls!Sheet37.CommandButton1_Click"
  End If

End Sub
Sub Msheet37()

If Sheets("Sheet37").Range("T2") = "" Then

Sheets("Sheet38").Select
  Application.Run "aa6FAA1.xls!Sheet38.CommandButton1_Click"
Else

Windows("aa6FAA2.xls").Activate
Sheets("Sheet1").Select
  Application.Run "aa6FAA2.xls!Sheet1.CommandButton1_Click"
  End If

End Sub
Sub Msheet38()

If Sheets("Sheet38").Range("T2") = "" Then

Sheets("Sheet39").Select
  Application.Run "aa6FAA1.xls!Sheet39.CommandButton1_Click"
Else

Windows("aa6FAA2.xls").Activate
Sheets("Sheet1").Select
  Application.Run "aa6FAA2.xls!Sheet1.CommandButton1_Click"
  End If

End Sub
Sub Msheet39()

除了工作薄和工作表名称不同,其他相同

提交回答
好评回答
  • 2011-05-27 11:09:29
    Google一下“溢出堆栈空间”,会发现很多结果,主要原因归结一下可能是调用过多,内存爆了。
    要解决这个问题,最好上传一个示例文件。看你写的代码,应该有优化和简化的空间。写代码时,尽量提高代码段的通用性和可重复利用性,像记流水账一样,很容易出问题,而且不便维护。

    1***

    2011-05-27 11:09:29

其他答案

    2011-05-26 10:48:57
  • 你的文档过多了,7个工作簿 每个 40 个工作表,很明显是内容太多了,导致堆栈溢出的。
    你可以把这么多内容分为几个excel文件进行处理么?

    如***

    2011-05-26 10:48:57

类似问题

换一换
  • 办公软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):