我的Sub无法识别连接字符串

时间:2017-01-27 18:13:58

标签: excel vba excel-vba

我做了以下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)

不幸的是,我遇到了一个特定案例的问题。我希望将相同的值复制到同一列中的多个单元格中。以下是我提出的建议:

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

那不起作用。没有错误消息,但没有任何值粘贴到我的工作表中。我认为也许连接整数i正在将字符串转换(是技术词?​​)到不同的类型,所以我尝试了以下内容:

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

显然,我可以写出每个案例,但这似乎有点荒谬。知道发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

当我尝试你的代码时你的'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

所以我觉得这可能是你的麻烦。