用于从一个变量范围复制到另一个变量范围的宏
Macro for copying from one variable range to another variable range
我有一列数据,我想将其中四个单元格的范围复制到不同工作表中的另一个范围。这应该在一个循环中,每次都会更改要复制的起始单元格。
我或多或少是宏编程的新手,无法超越以下代码,它在开始时就给我一个编译错误(“未定义子或函数”),我不确定是什么原因因为那是...
另外,我有一种感觉,我正在更改我的变量,但实际上并没有在单元格中打印一些东西。
如有任何帮助,我们将不胜感激!
干杯,
大来
Sub CopyingPeriod2()
Dim ws As Worksheet
Set ws = Worksheets("1")
Dim OneCells As Range
Set OneCells = ws.Range("C1:C4")
Dim works As Worksheet
Set works = Worksheet("New")
Dim NewCells As Range
Set NewCells = works.Range("J51:J54")
Do Until ActiveCell.Value = ""
NewCells.Value = OneCells.Value
OneCells = OneCells.Offset(8, 0)
NewCells = NewCells.Offset(0, 1)
Loop
End Sub
更新:
回复评论:
每次循环运行时,C1:C4 范围将偏移 8 行。
每次循环运行时,J51 单元格将偏移 1 列。
我继续尝试并想出了以下代码(还没有包含循环):
复制粘贴作品。但是,当更新 OneCells 时,工作表中原始区域的单元格变为空白,并且 OneCells.Select 选择与之前相同的区域
Sub CopyingPeriod2d()
Dim OneCells As Range
Set OneCells = Range("C1:C4")
Worksheets("1").Activate
OneCells.Select
Selection.Copy
Worksheets("New").Activate
Range("J51").PasteSpecial xlPasteValues
Worksheets("1").Activate
OneCells.Select
ActiveCell.Offset(8, 0).Select
OneCells = Range(ActiveCell, ActiveCell.Offset(4, 0))
OneCells.Select
最终,成功了 =)
Sub CopyingPeriod2d()
Dim worksh As Worksheet
Dim ws As Worksheet
Dim OneCells As Range
Dim NewCells As Range
Set worksh = Sheets("1")
Set ws = Sheets("New")
'AcCoa data copy
Set OneCells = worksh.Range("C1:C4")
Set NewCells = ws.Range("J51")
i = 1
'Selection of first cells, else the loop would not run properly since it is checking for the ActiveCell content
Sheets("1").Activate
OneCells.Select
Do Until ActiveCell.Value = ""
OneCells.Copy
'Paste to destination and update destination for next iteration of the loop
NewCells.PasteSpecial xlPasteValues
If i = 6 Or i = 12 Then
Set NewCells = NewCells.Offset(0, 3)
Else
Set NewCells = NewCells.Offset(0, 1)
End If
i = i + 1
Set OneCells = OneCells.Offset(12, 0)
OneCells.Select
Loop
我有一列数据,我想将其中四个单元格的范围复制到不同工作表中的另一个范围。这应该在一个循环中,每次都会更改要复制的起始单元格。
我或多或少是宏编程的新手,无法超越以下代码,它在开始时就给我一个编译错误(“未定义子或函数”),我不确定是什么原因因为那是... 另外,我有一种感觉,我正在更改我的变量,但实际上并没有在单元格中打印一些东西。
如有任何帮助,我们将不胜感激!
干杯, 大来
Sub CopyingPeriod2()
Dim ws As Worksheet
Set ws = Worksheets("1")
Dim OneCells As Range
Set OneCells = ws.Range("C1:C4")
Dim works As Worksheet
Set works = Worksheet("New")
Dim NewCells As Range
Set NewCells = works.Range("J51:J54")
Do Until ActiveCell.Value = ""
NewCells.Value = OneCells.Value
OneCells = OneCells.Offset(8, 0)
NewCells = NewCells.Offset(0, 1)
Loop
End Sub
更新:
回复评论: 每次循环运行时,C1:C4 范围将偏移 8 行。 每次循环运行时,J51 单元格将偏移 1 列。
我继续尝试并想出了以下代码(还没有包含循环): 复制粘贴作品。但是,当更新 OneCells 时,工作表中原始区域的单元格变为空白,并且 OneCells.Select 选择与之前相同的区域
Sub CopyingPeriod2d()
Dim OneCells As Range
Set OneCells = Range("C1:C4")
Worksheets("1").Activate
OneCells.Select
Selection.Copy
Worksheets("New").Activate
Range("J51").PasteSpecial xlPasteValues
Worksheets("1").Activate
OneCells.Select
ActiveCell.Offset(8, 0).Select
OneCells = Range(ActiveCell, ActiveCell.Offset(4, 0))
OneCells.Select
最终,成功了 =)
Sub CopyingPeriod2d()
Dim worksh As Worksheet
Dim ws As Worksheet
Dim OneCells As Range
Dim NewCells As Range
Set worksh = Sheets("1")
Set ws = Sheets("New")
'AcCoa data copy
Set OneCells = worksh.Range("C1:C4")
Set NewCells = ws.Range("J51")
i = 1
'Selection of first cells, else the loop would not run properly since it is checking for the ActiveCell content
Sheets("1").Activate
OneCells.Select
Do Until ActiveCell.Value = ""
OneCells.Copy
'Paste to destination and update destination for next iteration of the loop
NewCells.PasteSpecial xlPasteValues
If i = 6 Or i = 12 Then
Set NewCells = NewCells.Offset(0, 3)
Else
Set NewCells = NewCells.Offset(0, 1)
End If
i = i + 1
Set OneCells = OneCells.Offset(12, 0)
OneCells.Select
Loop