【问题标题】:Excel macro Select CaseExcel 宏 选择案例
【发布时间】:2016-02-01 10:53:32
【问题描述】:
SM1 = "5000"
SM = "SPOTMARKET"
SM = "*" & SM & "*"

Select Case Cells(H + 2, 24).Value
            Case SM,SM1
             C(j) = "SPOTMARKET"

        End Select

我正在尝试制作类似的东西,但“SM”无法正常工作。我想要 C(J) = "SPOTMARKET" 当 Cells(H + 2, 24) 中有单词 spotmarket 时。它可能是 WRER-SPOTMARKET 或相反的 SPOTMARKET-WRER。

此行位于 For j=0 到 XXX 和 For H=0 到 XXX 内。 C 是一个数组。

谢谢你

【问题讨论】:

  • 什么是CH + 2 是什么意思 - J 列?
  • 您使用"*" 作为通配符?
  • 我想要做的是,SM 表示 SPOTMARKET 一词中包含的任何内容。是的,作为外卡
  • 是的,这就是通配符的含义(*代表任何东西)。您必须使用 LIKE 运算符进行比较。检查这个线程。 stackoverflow.com/questions/18409418/…

标签: vba excel


【解决方案1】:

您应该使用InStr 来测试是否找到“SPOTMARKET”。

If InStr(Cells(H + 2, 24), "SPOTMARKET") > 0 Then
    C(j) = "SPOTMARKET"
ElseIf InStr(Cells(H + 2, 24), "FORWARDMARKET") > 0 Then
    C(j) = "FORWARDMARKET" 
End If

InStr 如果没有匹配则返回 0,如果找到则返回整数 > 0。

【讨论】:

  • 这很完美,但我该如何添加另一个词?我试图在 InStr 中再添加一个像 Spotmarket 这样的词,但它总是给我错误。
【解决方案2】:

编辑:现在它应该可以工作了:

Public Sub Testing()
    Dim sm1
    Dim k

    k = "lalal SPOTMARKET ale"
    sm1 = "5000"

    Select Case True
        Case k Like "*SPOTMARKET*", sm1
            Debug.Print "Found"
    End Select

End Sub

这是一篇文章,其中包含很好的示例:

https://msdn.microsoft.com/en-us/library/swf8kaxw.aspx

【讨论】:

  • 怎么回事?在我的控制台中: ?"LALALALA SPOTMARKET LALALALA LALALA" like "SPOTMARKET" 返回 true,因此应该如此。注意 - 第二个现货市场之前和之后的星号已从 stackoverflow 中删除。
  • 它要求一些东西 = > > ...等
猜你喜欢
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多