【问题标题】:Get nth element from VBA string array从 VBA 字符串数组中获取第 n 个元素
【发布时间】:2017-02-01 16:34:05
【问题描述】:

如何从 VBA 字符串数组中提取第 n 个元素?

我有一个字符串,比如:TEST - 2017/01/20 = Invoice

我希望尽可能简洁地提取出第二个和第三个元素。我正在尝试这样的Javascripty,它不起作用,所以必须有一种VBA方式:

Dim Report As String
Dim CurrLine As String
Dim CurrDate As String
Dim CurrTask As String

CurrLine = "TEST - 2017/01/20 = Invoice"
CurrDate = Trim(Split(CurrLine, '-')[1])
CurrTask = Trim(Split(CurrLine, '=')[1])
Report = Report & CHR(34) & CurrDate & CHR(34) & "," & CHR(34) & CurrTask & CHR(34)

//result: "2017/01/20","Invoice"

【问题讨论】:

标签: arrays vba excel


【解决方案1】:

一个可能的解决方案

Dim Report As String
Dim CurrLine As String
Dim CurrDate As String
Dim CurrTask As String, St 


CurrLine = "TEST - 2017/01/20 = Invoice"
St=Split(replace(CurrLine, "=","-"),"-")
CurrDate = St(1)
CurrTask = St(2)
Report = Report & CHR(34) & CurrDate & CHR(34) & "," & CHR(34) & CurrTask & CHR(34)  //result: "2017/01/20","Invoice"

【讨论】:

  • 希望高效,我也可以这样做:Dim Report as String, CurrLine, CurrDate, CurrTask, St 吗? 目标是尽可能多地在一行中完成
  • 绝对是,但是currline 和follows 将有数据类型变体,而不是字符串
  • 所以我可以省略as String 位而只使用Dim Report, CurrLine, CurrDate, CurrTask, St 并且代码仍然可以正常工作..?
  • 谢谢 - 你解决了我的问题。相信微软会不合时宜。我在 VBA 编辑器中使用 Ctrl+Z 撤消了一些更改,然后使用 Ctrl+Y 将它们放回去......我会因为微软而秃头。
  • @crashwap eeeer 不是很好的形式,如果你想在一行中使用格式:Dim a as long,b as string,c as Double。如果您省略尺寸标注,它们将是变体,这是 st 在这种情况下所需要的,但它并不真正适合其余的
【解决方案2】:

我会使用带有替换的@h2so4 的解决方案(特别是如果它是与工作相关的任务),但如果你是“花式”编码的粉丝,这也适用:

Option Explicit

Public Sub Test()

    Dim strtest As String

    strtest = "Test - 2017 / 1 / 20 = Invoice"

    Debug.Print Trim(Split(strtest, "-")(1))
    Debug.Print Trim(Split(strtest, "=")(1))
    Debug.Print Trim(Split(Trim(Split(strtest, "-")(1)), "=")(0))

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-07
    • 2018-12-31
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2011-07-14
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多