gpt4 book ai didi

excel - VBA左函数问题

转载 作者:行者123 更新时间:2023-12-04 21:35:48 25 4
gpt4 key购买 nike

我正在尝试像在这个基本示例代码中一样使用左函数,它给了我编译错误,但是当我使用右函数而不是左函数时它可以工作,可以找出原因。

示例代码:

Public Sub LeftSub()
Dim SourceRange As Range, DestinationRange As Range
Dim i As Integer

Set SourceRange = Workbooks("xx.xlsx").Sheets("Sheet1").Range("B1:B10")
Set DestinationRange = Workbooks("xx.xlsx").Sheets("Sheet1").Range("A1:A10")

For i = 1 To SourceRange.Count
DestinationRange(i, 1).Value = Left(SourceRange(i, 1).Value, 2)
Next i
End Sub

最佳答案

Left可以解决(按此顺序):

  • 一个名为 Left 的局部变量
  • 模块范围的变量,或同一模块中的成员
  • 基类中的成员(例如,表单模块中的 UserForm.Left)
  • 同一项目的标准模块中的公共(public)/全局成员
  • VBA 标准库或任何引用项目中的公共(public)/全局成员(按项目引用对话框中指定的顺序)

  • 第一个匹配是使用的匹配,无论其签名如何:

    IntelliSense showing how Left resolves to a same-module Left function even with a completely different signature

    这个函数的标识符隐藏了内置的。访问内置 Left函数,你现在需要限定它:
    Debug.Print VBA.Strings.Left(...)

    稍微无关,但请注意 VBA.Strings.Left返回一个隐式 Variant :

    enter image description here

    它的强类型小弟弟返回显式 String :

    enter image description here

    因此避免了隐式类型转换的成本;更喜欢 Left$Left每当 String参数永远不能是 Null - 这两个功能非常相似,除了这个:
    Debug.Print Left(Null, 1)  ' outputs Null
    Debug.Print Left$(Null, 1) ' raises runtime error 94 - Invalid use of Null

    也就是说,除非您正在处理 ,您可能永远不会遇到 Null在 VBA 中。

    关于excel - VBA左函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38497591/

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