gpt4 book ai didi

VBA,代码在 excel 2010 中运行良好,在 2013 年运行缓慢且无响应错误

转载 作者:行者123 更新时间:2023-12-04 20:30:59 27 4
gpt4 key购买 nike

以前在 2010 excel 版本(版本 14.0.7165.5000)中运行我的代码时,它在 4 分钟内运行。 (但是,如果我第二次运行它,它就不起作用)
切换到 2013 时,我得到“excel 没有响应”或者它只是 excel 挂起。
该代码从目录中打开一个文件,将它们加载到我的 Excel 工作表中,然后编译和转换一些数据。

我逐步完成了代码,似乎通过了这部分,现在 excel 没有响应我给定的 sub sub ,特别是在这部分,

   'write
For i = 1 To WorksheetFunction.Min(nRows, UBound(arr, 1))
For j = 1 To nCols
If fromTop Then writeVal = arr(i, j) Else writeVal = arr(UBound(arr, 1) - i + 1, j)
thisWS.Cells(startRow + i - 1, startCol + j - 1).value = writeVal
Next j
Next i

有人知道为什么吗?是否有一些我正在使用的功能在 2010 年有效,但在 2013 年无效?

最佳答案

这不是一个真正的答案。但是,我不确定代码是否会在评论部分格式化。如果有人愿意告诉我将来如何处理这种情况,请告诉我!

无论如何,优秀的家伙,我的意思是:

'clear
startCell.Resize(nRows, nCols).ClearContents

代替:
'clear
For i = 1 To nRows
For j = 1 To nCols
thisWS.Cells(startRow + i - 1, startCol + j - 1).value = ""
Next j
Next i

好的...接下来将更改 writeArrToWS 子以使用数组一次写入整个范围。我重写了 sub,并从我上面的答案中加入了修改后的变化。我想你会想要:
Public Sub writeArrToWS(arr() As Variant, startCell As Range, fromTop As Boolean, nRows As Long, nCols As Long)

Dim i As Long, j As Long, startRow As Long, startCol As Long
Dim thisWS As Worksheet, totalRange As Range

Set thisWS = startCell.Worksheet

'set the write range
Set totalRange = startCell.Resize(nRows, nCols)

'clear
totalRange.ClearContents

'write
If fromTop Then
totalRange.Value2 = arr
Else
Dim reversedArr() As Variant, swappedRow As Long
ReDim reversedArr(1 To nRows, 1 To nCols)
For i = 1 To nRows
swappedRow = nRows - i + 1
For j = 1 To nCols
reversedArr(swappedRow, j) = arr(i, j)
Next j
Next i
totalRange.Value2 = reversedArr
End If

End Sub

一些东西:
  • 好像 fromTop 是真的,你只是将数组粘贴到范围......我误解了吗?如果是这样,那几乎就像您只想要一个“reverseArray”函数/子程序...
  • 我们基本上只是生成一个新数组“reversedArr”,它颠倒了行的顺序,但保留了列
  • 您将 nRows 和 nCols 传递给函数有什么特别的原因吗?当 nRows 和 nCols 不仅仅是传递数组的行数和列数时,您是否想使用该函数?如果不是,那么我认为没有理由传递这些变量,而只是从传递的数组在函数内部生成它们。
  • 关于VBA,代码在 excel 2010 中运行良好,在 2013 年运行缓慢且无响应错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897442/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com