Как мне перебрать массив? Идея состоит в том, чтобы перейти на рабочий лист «Имена», где у меня есть список инициалов и имен пользователей в списке. Создайте 2 массива, в которых будут записаны инициалы и имя каждого человека. Затем посчитайте, сколько человек находится на листе. (Я считаю, что счетчик необходим для завершения цикла? где начальное значение вводится каждые 3 строки, я указал в 3 раза больше общего количества) Далее перейдите к рабочему листу «LoopTest» и введите начальное значение, а также добавьте пол и возраст.
Итак, как показано ниже, мне нужно попытаться ввести начальную букву, затем в следующую строку записать «Пол», затем «Возраст». Затем возвращается к следующему инициалу (после 3 строк). Я пытаюсь добавить 1 в массив для каждого цикла, чтобы он печатал инициалы по порядку. Однако при вызове массива возникает ошибка Initial(i).
Сможет ли кто-нибудь увидеть мои ошибки?
Sub LoopTEST2()
Worksheets("Names").Activate
Dim Initial(1 To 18) As String
Dim Names(1 To 18) As String
Initial(1) = Range("A2").Value
Initial(2) = Range("A3").Value
Initial(3) = Range("A4").Value
Names(1) = Range("B2").Value
Names(2) = Range("B3").Value
Names(3) = Range("B4").Value
NumRows = Range("A2", Range("A2").End(xlDown)).Rows.Count
Worksheets("LoopTest").Activate
Dim i As Integer
For i = 1 To NumRows * 3 Step 3
Cells(i, 1).Value = Initial(i): Cells(i + 1, 1).Value = "Sex:": Cells(i + 2, 1).Value = "Age:":
Next i
End Sub
Ваша манера объяснять, что вам нужно, немного неясна, без обид. Итак, было бы хорошо отредактировать ваш вопрос и показать картинки, изображающие исходную ситуацию и то, как вам это нужно. Затем, как сказано выше, когда вы упоминаете о какой-либо ошибке, полезно показать описание ошибки, указав, в какой строке кода она возникает.
Не могли бы вы приложить скриншот исходных данных? Это может помочь.
Вы пытаетесь объединить строки двоеточиями? Для объединения строк используется амперсанд (&). В этой строке двоеточия стоят не в тех местах.
извините всех, я мог бы объяснить, чего я хочу, лучше. @MGonet смог распознать мое отсутствие навыков письма и предоставить то, что было необходимо.



Управляющая переменная i в цикле меняется с шагом 3, и вам нужно прочитать последовательные элементы из массива Initial. Поэтому либо используйте другую переменную, либо каждый раз вычисляйте индекс массива Initial.
Или
Dim i As Integer, j As Integer
For i = 1 To NumRows * 3 Step 3
j = j + 1
Cells(i, 1).Value = Initial(j)
Cells(i + 1, 1).Value = "Sex:"
Cells(i + 2, 1).Value = "Age:"
Next i
Или
Dim i As Integer
For i = 1 To NumRows * 3 Step 3
Cells(i, 1).Value = Initial(i \ 3 + 1)
Cells(i + 1, 1).Value = "Sex:"
Cells(i + 2, 1).Value = "Age:"
Next i
Идеальный! Оглядываясь назад, я мог бы быть более точным в том, что спрашивал, но вариант 1 мне не удалось решить. Спасибо, MGonet!
«Сможет ли кто-нибудь увидеть мои ошибки?» - Да, мы сможем увидеть ваши ошибки, если вы включите их в вопрос. Пожалуйста, всегда указывайте сообщение об ошибке в вопросе. Полезно понять и таким образом решить проблему.