Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将定义的范围复制到另一张图纸VBA上的下一个可用列中_Vba_Excel 2003 - Fatal编程技术网

将定义的范围复制到另一张图纸VBA上的下一个可用列中

将定义的范围复制到另一张图纸VBA上的下一个可用列中,vba,excel-2003,Vba,Excel 2003,我正在尝试将一个指定的区域从一个工作簿粘贴到另一个工作簿,我指定的区域称为SourceRange,其目标是TargetRange 但是,如果TargetRange工作簿中c2列中存在数据,则需要将SourceRange粘贴到TargetRange中的下一个可用列中 下面的代码当前以黄色复制SourceRange,如果c2中不存在数据,如果有数据,则将其变为绿色,绿色实例需要粘贴到c2 so d2之后的下一个可用列中 我知道偏移功能,但我不确定应该在哪里使用它 Select Case Maste

我正在尝试将一个指定的区域从一个工作簿粘贴到另一个工作簿,我指定的区域称为SourceRange,其目标是TargetRange

但是,如果TargetRange工作簿中c2列中存在数据,则需要将SourceRange粘贴到TargetRange中的下一个可用列中

下面的代码当前以黄色复制SourceRange,如果c2中不存在数据,如果有数据,则将其变为绿色,绿色实例需要粘贴到c2 so d2之后的下一个可用列中

我知道偏移功能,但我不确定应该在哪里使用它

 Select Case MasterWorkbook.ActiveSheet.Range("c2") = ""


Case True
' The opened file automatically becomes the new active workbook and active worksheet.

Set SourceRange = ActiveSheet.Range("c2:c26")
Set TargetRange = MasterWorkbook.ActiveSheet.Range("c2:c29")
' Copy cell values one at a time from the source range to the target range.


For Row = 2 To 29
    TargetRange.Cells(Row, 1).Value = SourceRange.Cells(Row, 1).Value
Next

ActiveWorkbook.Close

' Set background colour of target range.
TargetRange.Select
With Selection.Interior
    .ColorIndex = 6
    .Pattern = xlSolid

End With

Case False

' The opened file automatically becomes the new active workbook and active worksheet.

Set SourceRange = ActiveSheet.Range("c2:c26")
Set TargetRange = MasterWorkbook.ActiveSheet.Range("c2:c29")
' Copy cell values one at a time from the source range to the target range.

'Sheets.Add.Name = "workbookname"
For Row = 2 To 29
    TargetRange.Cells(Row, 1).Value = SourceRange.Cells(Row, 1).Value



Next

ActiveWorkbook.Close


' Set background colour of target range.
TargetRange.Select
With Selection.Interior
    .ColorIndex = 10
    .Pattern = xlSolid

End With
End Select
试试这个

Sub test()
     Dim SourceRange As Range
     Dim TargetRange As Range
     ' The opened file automatically becomes the new active workbook and active worksheet.

     Set SourceRange = ActiveSheet.Range("c2:c26")
     Set TargetRange = MasterWorkbook.ActiveSheet.Range("b3")
     If TargetRange.Text <> "" then
         Set TargetRange = TargetRange.End(xlToRight).Offset(0, 1)
     End If
     Set TargetRange = MasterWorkbook.ActiveSheet.Range(TargetRange, TargetRange.Offset(25, 0))
     ' Copy cell values ALL AT ONCE from the source range to the target range.

     SourceRange.Copy
     TargetRange.PasteSpecial xlPasteValues

     ActiveWorkbook.Close

     ' Set background colour of target range.

     With TargetRange.Interior
         .ColorIndex = IIf(TargetRange.Column = 3, 6, 10)
         .Pattern = xlSolid
     End With
End Sub
子测试()
将源范围变暗为范围
变暗目标范围作为范围
'打开的文件将自动成为新的活动工作簿和活动工作表。
设置SourceRange=ActiveSheet.Range(“c2:c26”)
设置TargetRange=MasterWorkbook.ActiveSheet.Range(“b3”)
如果TargetRange.Text为“”,则
设置TargetRange=TargetRange.End(xlToRight).Offset(0,1)
如果结束
设置TargetRange=MasterWorkbook.ActiveSheet.Range(TargetRange,TargetRange.Offset(25,0))
'一次将所有单元格值从源范围复制到目标范围。
SourceRange.复制
TargetRange.Paste特殊XLPaste值
活动工作簿。关闭
'设置目标范围的背景色。
带TargetRange.内饰
.ColorIndex=IIf(TargetRange.Column=3,6,10)
.Pattern=xlSolid
以
端接头

我建议您逐行检查它,以便了解发生了什么。

谢谢,我昨晚有点让它工作了,但有一些问题,我将尝试您的代码,看看会发生什么。设置TargetRange时似乎再次出现错误:Set TargetRange=TargetRange.End(xlToRight)。不允许偏移量(0,1)“应用程序定义,对象定义错误”我看不出我们已经设置了:set-TargetRange=MasterWorkbook.ActiveSheet.Range(“b2”)单元格b2中是否有数据?如果没有,命令将尝试在工作表右侧设置范围。我将更改代码。如果“b2”中有数据它需要粘贴到下一个可用单元格“c2”中,依此类推。下次添加数据时,它进入d2,然后进入e2,然后进入f2 e.c.t,