【问题标题】:Type Mismatch when using + to concatenate [duplicate]使用 + 连接时类型不匹配 [重复]
【发布时间】:2021-04-21 16:56:38
【问题描述】:

问题

我只想在 A2 单元格中说Exam Mailers for (current month) (current year)。示例:Exam Mailers for April 2020

如果我这样做:

Range("a2").Value = "Exam Mailers for " + (months(i))

它有效,我得到了

Exam Mailers for April

但如果我这样做:

Range("a2").Value = "Exam Mailers for " + (months(i)) + " " + Year(Now)

失败了

Run-time error `13`: Type mismatch

这是目前为止的完整代码:

Sub datechange_1()
Dim months(11) As String
months(0) = "Janurary"
months(1) = "Feburary"
months(2) = "March"
months(3) = "April"
months(4) = "May"
months(5) = "June"
months(6) = "July"
months(7) = "August"
months(8) = "September"
months(9) = "October"
months(10) = "November"
months(11) = "December"

Dim nowMonth As Integer
nowMonth = Month(Now)

For i = 0 To 11
  If nowMonth = (i + 1) Then
     Range("a2").Value = "Exam Mailers for " + (months(i)) + " " + Year(Now)
  End If
Next
End Sub

感谢任何想法或建议。谢谢!

【问题讨论】:

  • +改成&
  • 您可以使用 + 来连接两个字符串,但如果其中一个参数是数字类型,您将收到类型错误,因为 VB 会将 + 运算符解释为数字加法而不是字符串连接。
  • 这就是为什么您应该立即切换到 & 进行所有连接(我知道重复令人作呕)。

标签: excel vba


【解决方案1】:

可能只是 Str(Year(Now))。看起来应该可以。

【讨论】:

  • 天哪,你可以像在 python 中一样使用 Str() 吗?哈哈哈太棒了!!我只是在学习 vbscript,所以我不知道从哪里开始。大声笑,但现在我知道它有 Str() 将来对我来说会很棒。谢谢!
  • 我要等8分钟才能接受你的回答! :(
  • VBA 中的 Str 与 Python 中的 str相同。 & 应该用于连接。
  • @JatonJustice - 不要使用Str。将+ 更改为&
  • @BigBen 啊!可以理解。谢谢你解释,我现在就这样做! :)
猜你喜欢
  • 2015-02-03
  • 2021-12-31
  • 2020-12-12
  • 1970-01-01
  • 2015-11-15
  • 2018-01-29
  • 2019-09-19
  • 1970-01-01
  • 2014-06-26
相关资源
最近更新 更多