2016-11-23 2 views
1

Я пытаюсь взять приблизительный список данных, а затем скопируйте их в предварительно отформатированную организованную форму. Для этого у меня есть приблизительный список, чтобы каждый элемент в списке нумерулся по порядку, независимо от того, существуют ли пробелы между элементами. Макрос, который я пытаюсь сделать, возьмет этот грубый список и скопирует его в форму без пробелов. Потерпите меня, я пытался научить себя 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 

ответ

0

Взятые из Range.Find Method (Excel):

Когда поиск достигает конца указанного диапазона поиска, он обертывается к началу диапазона. Чтобы остановить поиск, когда происходит обход , сохраните адрес первой найденной ячейки, а затем проверьте каждый последующий адрес найденной ячейки по этому сохраненному адресу.

+0

Это произошло, спасибо EEM! –

+0

Рад помочь! Вы пытались заменить первый первый цикл на некоторый вид данных и заменить второй цикл на что-то вроде 'Range.resize (ubound (array), ubound (array, 2)). Value = Array', чтобы опубликовать весь массив сразу? – EEM

Смежные вопросы