【问题标题】:Copy a Range using variables as arguments使用变量作为参数复制范围
【发布时间】:2013-12-04 17:52:49
【问题描述】:

我是 VBA 新手,在 Range 语法和可接受的参数方面存在问题。

这段代码的目的如下:

  1. 用户在 Sheet2 的 D5 单元格中输入值
  2. 用户使用按钮激活代码
  3. 在“配置”表中搜索值
  4. 定位值后复制对应范围
  5. 将范围粘贴回 Sheet2

我试图复制粘贴的范围是一个从工作表“配置”上的选定单元格 (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

【问题讨论】:

  • 那么它在哪里给出错误?你有没有通过代码查看观察值?

标签: excel vba


【解决方案1】:

这有帮助吗?

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

【讨论】:

  • 如果您希望我对我所做的更改发表评论,请问。另外,我不确定你要粘贴什么,所以我就按照你说的那样留下了。
猜你喜欢
  • 2013-11-04
  • 2019-12-21
  • 2013-12-28
  • 1970-01-01
  • 2014-08-30
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
相关资源
最近更新 更多