excel用vba时出现运行错误6-溢出,请帮忙看下我的程序是否有问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel用vba时出现运行错误6-溢出,请帮忙看下我的程序是否有问题相关的知识,希望对你有一定的参考价值。

Sub aaa()
Dim A1 As Worksheet, A2 As Worksheet, p As Integer, ts As Integer, i As Integer, j As Integer
ts = 1
Set A1 = Worksheets("样本1")
Set A2 = Worksheets("日收益率数据1")
Worksheets("数据匹配1").Select
m = A1.UsedRange.Rows.Count
n = A2.UsedRange.Rows.Count
For i = 2 To m
For j = 2 To n
If A1.Cells(i, 1) = A2.Cells(j, 1) And A1.Cells(i, 2) = A2.Cells(j, 2) Then
For p = -100 To 30
Cells(ts + 101 + p, 1) = A2.Cells(j + p, 1)
Cells(ts + 101 + p, 2) = A2.Cells(j + p, 2)
Cells(ts + 101 + p, 3) = A2.Cells(j + p, 3)
Cells(ts + 101 + p, 4) = A1.Cells(i, 3)
Next p
ts = ts + 131
End If
Next j
Next i
End Sub
程序如上,我调试时调试到If A1.Cells(i, 1) = A2.Cells(j, 1) And A1.Cells(i, 2) = A2.Cells(j, 2) Then这句就出现溢出错误了,此时m为400,n为45000,是不是n的值太大造成的溢出?还是程序有问题?

dim语句中的integer都改为Long,因为Integer正数最大为32767

另外,大量循环应该考虑将表格读入数组,用数组参与循环,提高速度。

比如使用语句:A1=Worksheets("样本1").usedrange
则生成A1数组,A1(i,1)就相当于cells(i,1)

另外可以学习VBA的字典法,进一步提高匹配速度
参考技术A 变量定义为整型integer,范围是-32768到 32767 ,所以45000肯定超限了。
改成 long,长整型就好了。
参考技术B 代码都没用,咋看?

使用 WshShell 从 VBA 运行 .NET 应用程序时出现溢出错误

【中文标题】使用 WshShell 从 VBA 运行 .NET 应用程序时出现溢出错误【英文标题】:Getting Overflow Error at running .NET application from VBA with WshShell 【发布时间】:2013-03-27 11:56:12 【问题描述】:

为什么我在使用以下代码启动 .NET 应用程序 (QCSearch.exe) 时收到 Error 6: Overflow:

Private Sub StartQCSearch()
    Dim wsh As WshShell
    Dim waitOnReturn As Boolean: waitOnReturn = True
    Dim windowStyle As Integer: windowStyle = 1
    Dim errorCode As Integer
    Dim pth As String
    
    Set wsh = New WshShell
    pth = ThisWorkbook.Path & "\QCSearch.exe"
    // Following line is marked, when debugging error 6:
    errorCode = wsh.Run(pth, windowStyle, waitOnReturn)
    If errorCode <> 0 Then
        MsgBox "QCSearch.exe exited with error code " & errorCode & "."
    End If
End Sub

.NET 应用程序(用 c# 编写)有一个主窗体,它打开一个对话框。 当我确认此对话框时,出现错误 6 并立即关闭 .NET 应用程序。

似乎对话框正在返回一些errorCode 无法分配的退出代码。 但正如我所说,我检查了我的 .NET 应用程序的退出代码,然而,它们通常不应该通过关闭任何对话框来返回,而是通过关闭主窗体来返回?!

另外,调试错误后,errorCode变量仍然赋值为0。

提前感谢您的帮助。

更新

从 Windows CMD 启动 .NET 应用程序时,在确认对话框后也会中断。现在,我真的很困惑。有谁知道为什么内部对话框会关闭整个应用程序?

【问题讨论】:

【参考方案1】:

好的,如果您在 .NET 应用程序中使用相对路径,永远不要忘记这样做:

wsh.CurrentDirectory = ThisWorkbook.Path

【讨论】:

如果这是您想要的,您应该将此标记为问题的答案。可以标记自己对自己问题的回答。 好的,但我只能在两天内完成。

以上是关于excel用vba时出现运行错误6-溢出,请帮忙看下我的程序是否有问题的主要内容,如果未能解决你的问题,请参考以下文章

将公式插入单元格 VBA Excel 时出现运行时错误 1004

从 Excel VBA 运行工作参数化 Access SQL 查询 (INSERT INTO) 时出现“需要对象”错误

Excel:VBA:CountIf()运行时出现Run-time error:

使用 Range 类在 VBA 中创建宏时出现运行时错误 1004

将数据插入表时出现 ADODB VBA 自动化错误

自己写了一个比较短的 Linux 脚本,但运行时出现 segmentation fault ,请帮忙看一下