Если и сделать до цикла EXCEL VBA
Новичок в VBA, если кто-то может помочь мне, что я делаю неправильно здесь. Попытка запустить цикл таким образом, чтобы он искал определенный текст, запускает цикл, а затем останавливается в определенной точке. Петли таковы, что я хочу, чтобы он скопировал некоторые значения ниже в моем листе, следовательно, a равно 55. Им грозит заблокировать сообщение об ошибке, если без конца, если
Вот код:
Private Sub CommandButton3_Click()
For y = 1 To 15 Step 5
Dim x As Double
Dim a As Double
x = 1
a = 55
If Cells(x, y).Value = "Text1" Then
Do Until Cells(x, y).Value = "Text2"
Cells(a, y) = Cells(x, y).Value
Cells(a, y + 1) = Cells(x, y + 1)
x = x + 1
a = a + 1
Loop
End Sub
2 ответа:
Помимо вопросов, которые я упомянул в комментариях к вашему сообщению, если я правильно вас понял, вы хотите сделать цикл по ячейкам в столбце А, найти первый "Text1", а затем скопировать все ячейки в строку 55 и ниже, пока не найдете"Text2". Если это так, попробуйте следующий код:
Private Sub CommandButton3_Click() Dim x As Long, y As Long Dim a As Long Dim LastRow As Long With Worksheets("Sheet1") '<-- modify "Sheet1" to your sheet's name For y = 1 To 15 Step 5 x = 1 '<-- reset x and a (rows) inside the columns loop a = 55 '<-- start pasting from row 55 LastRow = .Cells(.Rows.Count, y).End(xlUp).Row While x <= LastRow '<-- loop until last row with data in Column y If .Cells(x, y).Value Like "Text1" Then Do Until .Cells(x, y).Value = "Text2" .Cells(a, y).Value = .Cells(x, y).Value .Cells(a, y + 1).Value = .Cells(x, y + 1).Value x = x + 1 a = a + 1 Loop End If x = x + 1 Wend Next y End With End Sub
Отступ-это путь вперед, у вас есть
for
оператор безnext
иif
БезEnd If
:Private Sub CommandButton3_Click() For y = 1 To 15 Step 5 Dim x As Double Dim a As Double x = 1 a = 55 If Cells(x, y).Value = "Text1" Then Do Until Cells(x, y).Value = "Text2" Cells(a, y) = Cells(x, y).Value Cells(a, y + 1) = Cells(x, y + 1) x = x + 1 a = a + 1 Loop End If Next y end sub