检查是否存在值,然后复制到另一个工作表

时间:2016-11-23 17:34:19

标签: excel vba

我正在尝试获取粗略的数据列表,然后将其复制到预先格式化的有组织的表单中。为此,我设置了粗略列表,以便列表中的每个项目按顺序编号,无论项目之间是否有空格。我想要制作的宏将采用粗略的列表并将其复制到没有任何空格的表单。忍受我,我一直在尝试自学Visual Basic,所以我的代码可能会......凌乱。目前,我遇到的问题是我在i = i + 1上出现溢出。

Sub Print_Sheet_Populate()
'
' Print_Sheet_Populate Macro
' Takes Items from Raw Data sheet and puts them in Print Sheet sheet.
'

'
Dim wsS1 As Worksheet
Dim wsS2 As Worksheet
Dim ending As Long
Dim copy() As Long
Dim i As Long

Set wsS1 = Sheets("Raw Data")
Set wsS2 = Sheets("Print Sheet")

With wsS1.Range("A:A") 'To copy the item numbers in the rough data to an array
    i = 1
        Set c = .Find(i, LookIn:=xlValues)
        If Not c Is Nothing Then
            ReDim copy(i)
            copy(i - 1) = c.Value
            Do
                i = i + 1
                ending = i
            Loop While Not c Is Nothing
        End If
End With

With wsS2.Range("A24:A324") 'To paste the data from the array to the form
    i = 1
        If Not i = ending Then
            Do
                Worksheets("wsS2").Range("A" & i).Value = copy(i - 1)
                i = i + 1
            Loop While Not c Is Nothing
        End If
End With
End Sub

1 个答案:

答案 0 :(得分:0)

取自Range.Find Method (Excel)

  

当搜索到达指定搜索范围的末尾时,它   环绕到范围的开头。要在此时停止搜索   发生环绕,保存第一个找到的单元格的地址,然后   根据保存的地址测试每个连续的发现单元地址。