gpt4 book ai didi

excel - 为什么在 Split 函数末尾添加 (1) 可以清除类型不匹配错误?

转载 作者:行者123 更新时间:2023-12-03 02:30:15 29 4
gpt4 key购买 nike

我想创建一个宏来查找列标题并选择该标题下方的所有内容。但是,我不想使用 .end(xldown) 并希望使用 .end(xlup) 来防止空列出现问题。但我遇到了一个问题,标题所在的列是动态的。

我环顾四周,发现了一个使用 split 来查找列字母的代码:

Sub Macro1()

Dim rngHeader As Range
Dim rngHeadReq As Range

Set rngHeader = Range("A1:AL1")
Set rngHeadReq = rngHeader.Find("Adjustment Operation Type")

col = rngHeadReq.Address
colAddress = Split(col, "$")(1)

MsgBox colAddress

End Sub

消息框返回正确的列字母。我查了一下 split ,它看起来很简单,我不明白的是我复制它的编码器使用的 (1) 。当我删除 (1) 时,vba 给我一个类型不匹配错误。看split的参数,貌似不属于其中。

(1) 实际上做了什么?

最佳答案

基本上,您所看到的是编程中的快捷方式。这是完整说明的代码(在虚拟子中,供您自己复制和运行):

Sub tmpSO()

Dim tmp As String
Dim arr() As String

tmp = "$5$m$$a$1$"
arr = Split(tmp, "$")
Debug.Print arr(1)

End Sub

当您 Split() 一个字符串时,您实际上是使用给定的分隔符将其转换为数组(或列表)。在上面的示例中,字符串使用 $ 符号分隔。因此,第一项(在第一个 $ 之前是 "" 因为第一个 $ 符号之前没有任何内容。第二项是数字5。由于 VBA 计算的是从项目 (0) 开始的列表,因此第二个项目是 (1)

以下是运行时代码的屏幕截图,其中向 arr 添加了监视:

enter image description here

您可以清楚地看到下面的列表器 arr 以及旁边有索引号的项目。

请注意,无论您是否使用 Option Base 1Split() 都将始终生成以 (0) 开头的数组在模块的开头。

个人说明:编码时我也不喜欢缩写/快捷方式。这使得代码对于新手来说更难阅读和理解。因此,我会按照上面示例中所示的长/扩展方式对其进行编码,而不是使用给定的缩写。

关于excel - 为什么在 Split 函数末尾添加 (1) 可以清除类型不匹配错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697962/

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