gpt4 book ai didi

excel - VBA 代码在使用 F8 时有效,但在完全运行时无效

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

下面是我调用的代码。它被调用到要求用户打开所需工作簿的代码中。当我使用 逐步执行调用的代码时,它可以正常工作F8 但是当我完全运行代码时,它无法创建正确的相关表。

Dim nCols As Integer
Dim myRange, myCorrel, c As Range

Range("A1").CurrentRegion.Select
nCols = Selection.Columns.Count

Range("B1").Resize(1, nCols - 1).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select

Set myRange = Selection

' create correlation table

Application.Run "ATPVBAEN.XLAM!Mcorrel", myRange, _
"Statistics", "C", True

Selection.Copy

Range("B1").End(xlToRight).Offset(0, 2).Select
Selection.PasteSpecial

End Sub

我的相关表代码无法捕获数据标题。我会收到一堆没有原始列标题计算的相关性。

最佳答案

除非这个,

Application.Run "ATPVBAEN.XLAM!Mcorrel", myRange, _
"Statistics", "C", True

...更改选择,然后您可以完全避免依赖当前选择。几个嵌套 With ... End With statements可以重新解释您的代码,就像您依赖 Application.Selection 一样。属性,但直接引用所有内容。
Sub vert()
Dim nCols As Long
'this is how to declare multiple range objects
Dim myRange As Range, myCorrel As Range, c As Range

With Worksheets("Sheet1") '<~~set this worksheet reference!
With .Range("A1").CurrentRegion
nCols = .Columns.Count
With .Resize(.Rows.Count, nCols-1).Offset(0, 1) '<~~all of col B over to the right side

Set myRange = .Cells

' create correlation table
Application.Run "ATPVBAEN.XLAM!Mcorrel", myRange, _
"Statistics", "C", True

'change formulas to their values
.Cells = .Value
End With
End With
End With
End Sub

看起来您将所有 B 列转移到数据的右端范围,并使用 提供一些处理。 ATPVBAEN.XLAM!Mcorrel .这会留下公式,然后您将其恢复为公式结果(即 Range.Value property )。

因此,您可以看到使用 With ... End With 非常类似于逐步更改选择。主要区别在于它不会因任何外部干扰而改变。

How to avoid using Select in Excel VBA macros了解更多摆脱依赖选择和激活来实现目标的方法。

关于excel - VBA 代码在使用 F8 时有效,但在完全运行时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34303812/

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