首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单数组循环复制和粘贴

简单数组循环复制和粘贴
EN

Stack Overflow用户
提问于 2016-05-22 14:57:14
回答 1查看 2K关注 0票数 2

我是VBA的新手。对于变量数据,我使用一个列数组。从第一个单元格( A1 )开始,我想要复制A1中的文本值,粘贴到Sheet2,在A5中,返回到数组,然后再做一次,直到我到达一个空单元格为止。很容易对吧?

这是我的代码,我不能复制和粘贴它。

谢谢您的建议!

代码语言:javascript
复制
Sub copylist()
    ' copylist Macro
    Worksheets("ID nbr").Select
    Range("B3").Select
    For Each c In Worksheets("ID nbr").Range("B3:B20").Cells
        If c.Value <> "" Then
            Sheets("ID nbr").Select
            Dim rgCopy As Range

            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False

            Range("B4:G4").Select
            Application.CutCopyMode = False
            Selection.Copy
            Sheets("Findings").Select
            Range("B4").Select
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
        End If
    Next
End Sub
EN

回答 1

Stack Overflow用户

发布于 2016-05-22 15:08:15

你用宏记录器做了很大的尝试。现在让我们清理一下:

  1. 为了限制输入量,我将所有的工作表都移动到变量中。
  2. 我删除了所有的.Select和.Activate,它们只是减慢了代码的速度,如果引用得当,它们是不需要的。
  3. 当只需要值时,那么直接分配它们比使用剪贴板要快。我们可以像一块细胞一样来做这个。
  4. 我使用一个计数器为原始工作表中的每一行向下移动目标表上的一行。

守则:

代码语言:javascript
复制
  Sub copylist()
    Dim ows As Worksheet
    Dim tws As Worksheet
    Dim c As Range
    Dim i As Long

    Set ows = Sheets("ID nbr") 'Original sheet
    Set tws = Sheets("Findings") 'Target sheet
    i = 4 'this is the first row in the target sheet

    With ows
        For Each c In .Range("B3:B20").Cells
              If c.Value <> "" Then
                  tws.Range(tws.Cells(i, "B"), tws.Cells(i, "G")).Value = .Range(.Cells(c.Row, "B"), .Cells(c.Row, "G")).Value
                  i = i + 1
              End If
        Next c
    End With

    End Sub
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37375878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档