我做了以下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
显然,我可以写出每个案例,但这似乎有点荒谬。知道发生了什么事吗?
答案 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
所以我觉得这可能是你的麻烦。