你如何复制单元格数据的范围从一个表格到另一个表格中的特定单元格?

我目前遇到的问题是试图编写一个子程序,将从一个工作表中复制例如A1:A10的单元格; 到具有特定单元如A1,A2,B1,B2,B3,B5,C1,C2,C4,C5的另一个片材。 问题是当前子我不能读取工作表名称和范围值。 这是代码

'User will be able to copy cell data from one to another. Public Sub CopyCell(ByVal pv_worksheet_source As Worksheet, _ ByVal pv_range_source_cells As Range, _ ByVal pv_worksheet_destination As Worksheet, _ ByVal pv_range_destination_cells As Range, _ ByRef pr_str_error_message As String) 'first the cells are compared for the data that is in them. If pv_range_source_cells.Cells.Count <> pv_range_destination_cells.Cells.Count Then pr_str_error_message = pr_str_error_message & "The cell count " & pv_range_source_cells.Cells.Count & " and " & _ pv_range_destination_cells.Cells.Count & " do not match. The cells of Initial Optics Input and Output cannot be copied!" Exit Sub End If Dim source_cells As Range Dim i As Integer Dim ArrOut() As String Dim str_source_worksheet_name As String Dim str_destination_worksheet_name As String ArrOut() = Split(pv_range_destination_cells.Address, ",") i = 0 For Each source_cells In pv_worksheet_source pv_worksheet_destination.Range(ArrOut(i)).Value = source_cells.Value i = i + 1 Next End Sub 

正如你所看到的,代码是假设在源和目的表名称中读取的,并且它们的单元格范围用于复制。 有types不匹配,加上我不知道如何复制VBA中的数据。 该子文件必须保存为模块格式,因为它将在整个工作簿中被调用以用于其他工作表。 这是在源工作表上调用它的一个例子….

 Private Sub CopyButton_Click() 'User gets data copied over to specific cells Dim str_error_message As String Call CopyCell(Sheet1, _ "A1:A10", _ Sheet2, _ "B1,B2,B3,C1,C2,C3,C4,D1,D2,D3", _ pr_str_error_message:=str_error_message) End Sub 

这是我点击button时出现错误的地方。 请帮忙,因为我一直在处理这个问题好几天了! 我真的会认真的! 🙂

ArrOut应该是一个数组,而不是一个string。

更改

  Dim ArrOut as String 

  Dim Arrout as Variant 

然后像这样设置数组:

  ArrOut = Split(pv_range_destination_cells, ",") 

然后调用“粘贴”

  For Each source_cells In pv_worksheet_source for i = lbound(arrout) to ubound(arrout) pv_worksheet_destination.Range(ArrOut(i)).Value = source_cells.Value next i Next 

编辑:你也设置pv_destination_cells作为一个string在你的调用copybutton click,但声明它是一个范围在子。 你应该把它设置为一个string在原来的子,如果你打算把它称为一个string像你的例子中,然后从数组声明中省略“.address”,因为我已经反映在我的代码上面