连接的string不被我的Sub识别

我做了以下Sub来帮助我复制其他工作簿中的值,甚至只是从同一工作簿中的其他工作表中复制值。

 Private Sub CopyValues(fromSheet As String, fromRange As String, toSheet As String, toRange As String, Optional fromFileName As String = "") Dim toFile As Excel.Workbook Set toFile = ActiveWorkbook Dim fromFile As Excel.Workbook If Len(fromFileName) > 0 Then Set fromFile = Workbooks.Open(fromFileName) Else Set fromFile = ActiveWorkbook End If With ActiveWorkbook toFile.Sheets(toSheet).Range(toRange).Value = fromFile.Sheets(fromSheet).Range(fromRange).Value End With If Len(fromFileName) > 0 Then fromFile.Close savechanges:=False End If End Sub 

它工作得很好(如果你觉得有帮助,你可以自由使用它)。 以下是可用的代码示例:

 Call CopyValues(reportName, "B4:C15", reportName, "E2:F13", reportDirPath) 

不幸的是,我遇到了一个特定情况的麻烦。 我正在寻find相同的值复制到同一列中的多个单元格。 以下是我想到的:

 For i = 2 To i = 13 Call CopyValues(reportName, "AJ2", reportName, "H" + i, reportDirPath) Next i 

这没有用。 没有错误消息,但没有值粘贴到我的表中。 我想也许连接i正在转换的整数(是技术字?)string到不同的types,所以我尝试了以下:

 For i = 2 To i = 13 Call CopyValues(reportName, "AJ2", reportName, CStr("H" + i), reportDirPath) Next i 

这仍然没有工作。 同样的交易。 没有错误消息,但没有值粘贴到我的表中。

+更改为&也无效:

 For i = 2 To i = 13 Call CopyValues(reportName, "AJ2", reportName, CStr("H" & i), reportDirPath) Next i 

显然,我可以把每个案例都写出来,但这似乎有些荒谬。 任何想法发生了什么?

当我尝试你的代码时你的For循环没有工作,但是当我改变你的for循环来说'For i = 2 to 13',而不是'For i = 2 To i = 13'代码的最后一个版本为我工作。

 For i = 2 To 13 Call CopyValues("Sheet1", "A1", "Sheet2", CStr("J" & i)) Next i End Sub 

所以我认为这可能是你的麻烦。