将值的范围从一个表单移动到另一个表单

我有一个不同的整数值的范围,让我们说从d7:o7。 我想将这些值移到同一工作簿中的另一个位置(基于此问题范围之外的逻辑)。 做这个的最好方式是什么?

我最初的(失败的)方法有点像这样:

创build一个变体

Dim myArray As Variant 

给数组赋值

 myArray = Range("d7:o7") 

输出新范围内的整数数组

 Range("d10:o10") = myArray 

提前致谢!

 Range("D10:O10").Value = Range("d7:O7").Value 

希望这可以帮助

这将复制 (不删除原始值),假设您停留在同一张纸上,但该列表示为一个数字(EG A = 1,B = 2等)。 此示例适用于2乘2arrays,但可以轻松更改开始和结束行号和列号:

 Sub CopyCells() Dim SrcBeginRowNum As Integer Dim SrcBeginColNum As Integer Dim SrcEndRowNum As Integer Dim SrcEndColNum As Integer Dim DstBeginRowNum As Integer Dim DstBeginColNum As Integer Dim ri As Integer Dim ci As Integer Dim dest_ri As Integer SrcBeginRowNum = 1 SrcBeginColNum = 1 SrcEndRowNum = 2 SrcEndColNum = 2 DstBeginRowNum = 34 DstBeginColNum = 5 dest_ri = DstBeginRowNum dest_ci = DstBeginColNum For ri = SrcBeginRowNum To SrcEndRowNum dest_ci = DstBeginColNum For ci = SrcBeginColNum To SrcEndColNum Cells(dest_ri, dest_ci).Value = Cells(ri, ci).Value dest_ci = dest_ci + 1 Next dest_ri = dest_ri + 1 Next End Sub 

我相信上面给出的最好的答案 :)你接受的地方。

所以我发布这个,以便对你开始做的事情有一些看法。 您可能会将数据从范围转换为数组,反之亦然。 但是,如果您正在使用multidimensional array或单维数组,则在输出时会有所不同。 我们拿Sheet1作为示例代码。

 Dim myArray As Variant '--to array myArray = WorksheetFunction.Transpose(WorksheetFunction_ .Transpose(Sheets(2).Range("D7:O7").Value)) '--to sheet Sheets(1).Range("D10").Resize(1, _ UBound(Application.Transpose(myarray))) = myarray 

我已经使用双转置来保持多列创build二维数组。 所以它会看起来像下面这样:

在这里输入图像说明