【问题标题】:String.Insert causing Invalid Qualifier error?String.Insert 导致无效的限定符错误?
【发布时间】:2021-12-22 19:08:24
【问题描述】:

我正在尝试获取用户表单上文本框的值并将其分配给字符串变量,然后使用 String 类的 Insert 方法将连字符插入该字符串变量。每次运行此代码时,我都会收到错误“无效的限定符”,并突出显示 AcctUnitString。

Dim AcctUnitString As String

AcctUnitString = AcctUnit.Text
AcctUnitString = AcctUnitString.Insert(2, "-")

Debug.Print (AcctUnitString)

AcctUnit 是用户表单上文本字段的名称。有什么想法可能导致此错误,或者有什么更好的方法来做我想做的事情?

用户将在文本框中输入一个 13 位代码(例如 9200030015001),我想将其格式化为:92-0003-001-5001。任何帮助是极大的赞赏。谢谢!

【问题讨论】:

  • 在我上面给出的示例中,如果我要在文本框中输入 9200030015001 而只是 Debug.Print(AcctUnit.Text),则值为 9200030015001。

标签: vba


【解决方案1】:

来自here

字符串不是 VBA 中的对象,因此它们没有像 VB.Net 中那样的 Substring 或 Remove 等方法。

【讨论】:

  • 嗯,这确实解释了很多,但是 VBA 中有可以进行字符串处理的函数吗?
  • 似乎有用于处理流的具有相似名称的独立函数。我遇到了类似的问题,使用 string.Trim(),但 VBA 的版本是 Trim(string)。也许您的问题也存在独立功能。
【解决方案2】:

我不知道有一个内置的 Excel 函数可以满足您的需求。

Sub test()

    Dim AcctUnitString As String

    AcctUnitString = "9200030015001"
    AcctUnitString = InsertString(AcctUnitString, "-", 2)
    MsgBox AcctUnitString
End Sub

Private Function InsertString(OriginalString As String, StringToInsert As String, WhereToInsertIt As Integer) As String
    Dim String1 As String, String2 As String
    String1 = Mid(OriginalString, 1, WhereToInsertIt)
    String2 = Mid(OriginalString, WhereToInsertIt + 1, Len(OriginalString))
    InsertString = String1 & StringToInsert & String2
End Function

http://www.vbforums.com/showthread.php?141943-Insert-string-within-another-string-at-specific-position

【讨论】:

  • 这给了我 92-0030015001,这肯定比错误更接近一点,但它用“-”替换原始字符串中的一个字符,而不是在现有字符之间插入。
  • 你是对的。我没有注意到给定零 - 我添加了一个可以执行此操作的用户函数。
猜你喜欢
  • 2015-05-14
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多