Я довольно новичок в VBA, и я изо всех сил пытаюсь выяснить код для копирования и вставки определенных значений в другой лист
У меня есть некоторый код, который работает, но он очень медленный для запуска:
If CheckBox1.Value = True Then Sheets("Sheet1").Range("A2:B2").Copy Destination:=Sheets("Sheet2").Range("A2:B2")
If CheckBox2.Value = True Then Sheets("Sheet1").Range("A3:B3").Copy Destination:=Sheets("Sheet2").Range("A3:B3")
If CheckBox3.Value = True Then Sheets("Sheet1").Range("A4:B4").Copy Destination:=Sheets("Sheet2").Range("A4:B4")
...............
If CheckBox53.Value = True Then Sheets("Sheet1").Range("A54:B54").Copy Destination:=Sheets("Sheet2").Range("A54:B54")
У меня есть каждый флажок, связанный с ячейкой рядом с ним, например, E2, E3, E4 и c для отображения True / False в зависимости от того, нажата кнопка или нет. Также
Я думаю, что для l oop было бы лучше, например, для "a = от 2 до 53" и использовать значения true / false в столбце E, однако я не уверен, как изменить диапазон ячеек в пределах a для l oop, так что он увеличивается точно так же, как "a", поэтому A2: B2, A3: B3 et c
Кроме того, другая проблема с этим кодом состоит в том, что копирует значения в те же ячейки на 2-м листе. Что было бы лучшим способом заставить его вставить значения в следующую доступную строку.
Если кто-то и мог бы указать куда-то, есть некоторый подобный пример кода, который был бы чрезвычайно полезен, чтобы я мог узнать, как это сделать. себя.
С уважением
Крис
редактировать с рабочим кодом
Это код, который я придумал, чтобы выполнить критерии, изложенные выше
Sub checkbox()
For i = 2 To 53
Sheets("Sheet1").Select 'activates sheet 1
If Sheets("sheet1").Cells(i, "E").Value = True Then ' checks for true value
Range("A" & i & ":B" & i).Select 'selects range of cells for copying
Selection.Copy
Sheets("Sheet2").Select 'selects sheet 2
Range("A65536").End(xlUp).Offset(1, 0).Select 'selects next available empty row
ActiveSheet.Paste 'pastes value
Else
End If
Next i
End Sub