VBA Итерация через ячейки
Я ищу способ итерации через ячейки на листе, чтобы вставить значения.
Код, указанный ниже, не будет распознавать местоположения ячеек. Есть ли способ закодировать ячейку, чтобы постепенно вставлять информацию в нужные места? Я хочу, чтобы код сначала вставлял значение в A1: C1, а затем переместился на 4 пробела и отправил в E1: G1 и так далее.
Не уверен, как перебирать буквы для перемещения ячейки.
Sub test() Dim x As Integer Dim y As Integer Dim InputSheet As Worksheet Dim myBook As Workbook Set myBook = Excel.ActiveWorkbook Set InputSheet = myBook.Sheets("InputSheet") For y = 0 To 5 x = 4 InputSheet.Range("A1 + 4*y : C1 + 4*y").Value = x Next y End Sub
Вы говорите книге, чтобы буквально искать диапазон «A1 + 4 * y: C1 + 4 * y», который, очевидно, не является допустимым адресом. Вам нужно оценить числовое выражение вне строки, преобразовать обратно в строку (либо явно использовать Cstr
либо вы можете поместить выражение в круглые скобки и позволить компилятору сделать это для вас, поскольку VBA динамически типизируется, что является важной концепцией, которую вы можете захотеть для поиска. В принципе, он может понять из контекста, что он имеет дело с переменной типа строки) и, наконец, привязать его к вашему адресу, чтобы это работало.
Поскольку вы, похоже, новичок в vba / coding, я бы посоветовал вам выяснить, как использовать контрольные точки и часы, чтобы увидеть, как ваша машина действительно оценивает ваши переменные.
InputSheet.Range("A" & (1+4*y) & ":C" & (1+4*y)).Value = x
Я бы попытался использовать «Ячейки» для этого.
Sub test() Dim x As Integer Dim y As Integer Dim InputSheet As Worksheet Dim myBook As Workbook Set myBook = Excel.ActiveWorkbook Set InputSheet = myBook.Sheets("InputSheet") For y = 0 To 5 x = 4 InputSheet.Range(InputSheet.Cells(1, 4 * y + 1), InputSheet.Cells(1, 4 * y + 3)).Value = x Next y End Sub
Вы можете использовать функцию смещения.
For i = 0 to 5 x = 4 InputSheet.Range("A1:C1").Offset(0, i * 4) = x Next i