Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Excel 使用变量作为参数复制范围_Excel_Vba - Fatal编程技术网

Excel 使用变量作为参数复制范围

Excel 使用变量作为参数复制范围,excel,vba,Excel,Vba,我是VBA新手,在范围语法和什么是可接受的参数方面有问题 本规范的目的如下: 用户将值输入到表2上的单元格D5中 用户使用按钮激活代码 搜索“配置”表中的值 在定位值后复制相应的范围 将范围粘贴回纸张2中 我尝试复制粘贴的范围是一个块,该块从工作表“Configs”上的选定单元格(D5)开始,一直到找到空单元格为止 Sub search() Dim GCell As Range, Dim box As Integer Dim Avio As String Dim

我是VBA新手,在范围语法和什么是可接受的参数方面有问题

本规范的目的如下:

  • 用户将值输入到表2上的单元格D5中
  • 用户使用按钮激活代码
  • 搜索“配置”表中的值
  • 在定位值后复制相应的范围
  • 将范围粘贴回纸张2中
  • 我尝试复制粘贴的范围是一个块,该块从工作表“Configs”上的选定单元格(D5)开始,一直到找到空单元格为止

    Sub search()
    
        Dim GCell As Range,
        Dim box As Integer
        Dim Avio As String
        Dim Sheet2 As Worksheet, Configs As Worksheet
        Dim rw1 As String, rw2 As String
    
        Set Configs = ActiveWorkbook.Sheets("Configs")
        Set Sheet2 = ActiveWorkbook.Sheets("Sheet2")
    
        Avio = Range("D5").Value
    
        Set GCell = Configs.Cells.Find(Avio)
    
        box = 0
    
        LoopX:
    
        box = box + 1
        If GCell.Offset(box, 0).Value = "" Then
    
        rw1 = GCell.Offset(1, -1).Address
        rw2 = GCell.Offset(box, 2).Address
    
        Configs.Range("rw1:rw2").Copy <-- this syntax doesnt seem to work...
        Sheet2.Range("Avio.Offset(1,0)").Paste <-- I know this is wrong, but I would like the range to be pasted just below the selected cell on Sheet2 
    
        Else: GoTo LoopX
        End If
    
    End Sub
    
    子搜索()
    将GCell设置为范围,
    将框变暗为整数
    Dim Avio作为字符串
    尺寸表2作为工作表,配置为工作表
    尺寸rw1为字符串,rw2为字符串
    Set Configs=ActiveWorkbook.Sheets(“Configs”)
    Set Sheet2=ActiveWorkbook.Sheets(“Sheet2”)
    Avio=范围(“D5”).值
    Set GCell=Configs.Cells.Find(Avio)
    框=0
    LoopX:
    盒子=盒子+1
    如果GCell.Offset(框,0).Value=”“,则
    rw1=GCell.Offset(1,-1).地址
    rw2=GCell.Offset(框,2)。地址
    配置范围(“rw1:rw2”)。复制这有帮助吗

    Sub search()
    
        Dim GCell As Range
        Dim box As Integer
        Dim Sheet2 As Worksheet, Configs As Worksheet
        Dim rw1 As String, rw2 As String
    
        Set Configs = ActiveWorkbook.Sheets("Configs")
        Set Sheet2 = ActiveWorkbook.Sheets("Sheet2")
    
        Dim rngAvio As Range
        Set rngAvio = Sheet2.Range("D5")
    
        Set GCell = Configs.Cells.Find(rngAvio.Value)
    
        box = 0
        Do While (GCell.Offset(box, 0).Value <> "")
            box = box + 1
    
            rw1 = GCell.Offset(1, -1).Address
            rw2 = GCell.Offset(box, 2).Address
            Configs.Range(rw1 & ":" & rw2).Copy rngAvio.Offset(1, 0)
        Loop
    
    End Sub
    
    子搜索()
    Dim GCell As范围
    将框变暗为整数
    尺寸表2作为工作表,配置为工作表
    尺寸rw1为字符串,rw2为字符串
    Set Configs=ActiveWorkbook.Sheets(“Configs”)
    Set Sheet2=ActiveWorkbook.Sheets(“Sheet2”)
    Dim rngAvio As射程
    设置rngAvio=Sheet2.范围(“D5”)
    Set GCell=Configs.Cells.Find(rngAvio.Value)
    框=0
    执行While(GCell.Offset(框,0.Value“”)
    盒子=盒子+1
    rw1=GCell.Offset(1,-1).地址
    rw2=GCell.Offset(框,2)。地址
    配置范围(rw1&“:”&rw2)。复制rngAvio.Offset(1,0)
    环
    端接头
    
    那么它在哪里出错?你有没有看一下手表的数值,看看代码?如果你想让我对我所做的更改发表评论,尽管问。另外,我不确定你想粘贴什么,所以我留下了它,就像你放的一样。