Я некоторое время боролся с этим, и мне нужна помощь. Я новичок в vba и буду признателен за некоторые рекомендации по этому вопросу. Моя электронная таблица настроена так, что я в ячейке a2 и читаю значение в b2, которое является целым числом, которое сообщает мне, сколько дополнительных профилей (sups) существует. Предположим, что номер 3 находится в b2. Затем я ожидаю, что 2 строки ниже c2 имеют некоторый текст (роль), введенный в c3 и c4.Прокрутите ячейки и добавьте значения в массив, а затем отобразите в activecell в VBA.
В то время как на a2 я читаю b2 для количества дополнительных профилей, а затем цикл для отображения на a2 ролей, найденных в c2, c3 и c4. Это может измениться, так как в некоторых случаях будет только 2 роли или 3, и так далее.
Для этого я закодированы следующим образом:
Sub testarray()
Dim sups As Integer
Dim role, resultrole As String
Dim test() As String
role = ActiveCell.Offset(i, 2).Value
sups = ActiveCell.Offset(0, 1).Value
i = 0
Do While i <= sups
test() = Split(role)
i = i + 1
ActiveCell.Value = test()
Loop
End Sub
Проблема заключается в том, что я только получаю строку c2 отображается и не все ниже содержание. Я хотел бы, чтобы a2 отображал значения c2, c3 и c4. Я буду использовать этот код для многих строк, чтобы связать роли.
Смотрите фотку моего кода и таблицы со значениями я читаю
Благодарим Вас за помощь в этом ... действительно очень признателен за любую обратную связь!
Я думаю, что вы хотите 'role' внутри цикла, но проще использовать' cells (r, c) 'вместо' offset'. – findwindow
Итак, продолжая логику, в ячейке A5 у вас будут следующие 2? –
Кроме того, я не думаю, что разделение - это то, что вы хотите, так как у вас есть это, он разбивает строку на каждое пространство и заполняет массив этими значениями. Вы хотите объединить значения. –