2015-03-07 2 views
2

Я новичок в vba .. Я не знаю, как зациклировать одно и то же значение из существующего поля листа. У меня был поиск, но я не нашел то, что искал.Вставка того же значения непрерывно в vba-excel

Это мой случай. Например. У меня есть поле, как это:

year  value 
2012  100 
2013  300 
2014  400 

у меня есть новые данные 2015, которые должны быть вставки в 5 раз и результат должен быть как этот

year  value 
2012  100 
2013  300 
2014  400 
2015  900 
2015  900 
2015  900 
2015  900 
2015  900 

Я сделал такой код:

Private Sub AddPostClick_Click() 
    Dim lRow As Long 
    Dim ws As Worksheet 
    Set ws = Worksheets("DATA") 

    lRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _ 
     SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 

With ws 

     If CheckBox1.Value = False Then 
       For lRow = 1 To 5 
        .Cells(lRow + 1, 1).Value = tYear.Value 
        .Cells(lRow + 1, 2).Value = txtValue.Value 
       Next lRow 
     End If 

End With 
End Sub 

мой код будет заменять предыдущие строки, а не вставлять его непрерывно из последней существующей строки. Это моя проблема.

+0

Это проблема 'для lRow = от 1 до 5'. Вам нужно объявить новую переменную (например, 'i') и использовать ее как цикл. Пример: 'Для i = 1 до 5', а затем' .Cells (lRow + i, 1) .Value' и т. Д. –

+0

да, вы правы. Большое спасибо ... –

ответ

1

Вы переписываете lrow. Объявите новый long. Вызовите i и используйте его как счетчик.

 Dim i as long 
     For i = Lrow + 1 To lrow + 1 + 5 
        .Cells(i, 1).Value = tYear.Value 
        .Cells(i, 2).Value = txtValue.Value 
       Next lRow 
+0

да, вы правы. Большое спасибо ... –

+0

Без проблем @ user1425503! –

+0

Я согласен, что этот ответ работает. Я думаю, что более читаемо иметь счетчик циклов как «для i = от 1 до 5», а затем «.Cells (lRow + i, 1)», чтобы найти ячейку. Просто мое мнение. –

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