2013-08-30 3 views
0

Я хотел бы написать скрипт, который выглядит как цикл для меня. Мои данные в колонке А.Excel VBA - easy Loop

  1. Я хочу поставить скрипт сказать в столбце B. например, B2 = A2
  2. Под B3 я ставлю в «хххх» и под В4 я ставлю в «гггг», а затем повторить шаг 1 & 2 до конца данных.

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

Sub DATA() 

Dim DL As Long 
Dim Script1 As String 
Dim Script2 As String 

DL = Range("A" & Rows.Count).End(xlUp).Row 
Script1 = "KEY END" 
Script2 = "KEY WAIT" 

Range("B2").Value = Range("A2") 
Range("B3").Value = Script1 
Range("B4").Value = Script2 

Range("B5").Value = Range("A3") 
Range("B6").Value = Script1 
Range("B7").Value = Script2 

Range("B8").Value = Range("A4") 
Range("B9").Value = Script1 
Range("B10").Value = Script2 

End Sub 
+0

Вы уже знаете вас нужен цикл. Сделайте цикл. – ApplePie

ответ

2

Попытка преобразовать код в 'логику петля' вы получите что-то вроде этого:

'beginning of your code here 
Dim i As Long 
for i=2 to DL 

    Range("B" & i*3-4).Value = Range("A" & i) 
    Range("B" & i*3-3).Value = Script1 
    Range("B" & i*3-2).Value = Script2 

next i 
'the end of your sub here 
+0

Спасибо за помощь. – Jax

0
Sub tgr() 

    Dim arrData() As Variant 
    Dim varAcell As Variant 
    Dim strScript1 As String 
    Dim strScript2 As String 
    Dim DataIndex As Long 
    Dim i As Long 

    strScript1 = "KEY END" 
    strScript2 = "KEY WAIT" 

    With Range("A2", Cells(Rows.Count, "A").End(xlUp)) 
     If .Row < 2 Then Exit Sub 'No data 
     ReDim arrData(1 To .Rows.Count * 3) 
     For Each varAcell In .Value 
      For i = 1 To 3 
       DataIndex = DataIndex + 1 
       arrData(DataIndex) = Choose(i, varAcell, strScript1, strScript2) 
      Next i 
     Next varAcell 
    End With 

    Range("B2").Resize(UBound(arrData)).Value = Application.Transpose(arrData) 

    Erase arrData 

End Sub 

[EDIT]

Для @KazJaw:

VBA Erase Statement

+0

'Erase' ?? ... не VBA !! –

+0

@KazJaw Я отредактировал свой ответ, чтобы включить заявление о стирании VBA из справки Excel VBA. Я не уверен, что вы подразумеваете под «не VBA» – tigeravatar

+0

Спасибо за помощь. – Jax