Я все еще новый ученик программирования VBA, и я столкнулся с проблемой, с которой я не могу найти решение. Я пытаюсь создать книгу для обработки рецептов. Я вызываю форму пользователя, используемую для добавления рецепта в макрос с несколькими вводами текстовых полей (~ 96 из них). Когда я ввожу все ингредиенты, количество, единицы и нажмите кнопку «ОК», я хочу, чтобы он написал, что находится в пользовательской форме на листе. Все текстовые поля имеют именование, заканчивающееся номером в порядке возрастания (например, .txtIngredient1, .txtIngredient2, ...). Можно ли использовать цикл for для копирования Me.txtIngredientX.Value в диапазон на листе?Excel VBA incrementing variable in for loop
Фрагмент моего текущего кода:
Sheets("Recipes").Range("B" & addatrow + 0) = Me.txtIngredient1.Value
Sheets("Recipes").Range("B" & addatrow + 1) = Me.txtIngredient2.Value
Sheets("Recipes").Range("B" & addatrow + 2) = Me.txtIngredient3.Value
Sheets("Recipes").Range("B" & addatrow + 3) = Me.txtIngredient4.Value
Sheets("Recipes").Range("B" & addatrow + 4) = Me.txtIngredient5.Value
Sheets("Recipes").Range("B" & addatrow + 5) = Me.txtIngredient6.Value
Sheets("Recipes").Range("B" & addatrow + 6) = Me.txtIngredient7.Value
Sheets("Recipes").Range("B" & addatrow + 7) = Me.txtIngredient8.Value
Sheets("Recipes").Range("B" & addatrow + 8) = Me.txtIngredient9.Value
Sheets("Recipes").Range("B" & addatrow + 9) = Me.txtIngredient10.Value
Sheets("Recipes").Range("B" & addatrow + 10) = Me.txtIngredient11.Value
Sheets("Recipes").Range("B" & addatrow + 11) = Me.txtIngredient12.Value
Sheets("Recipes").Range("B" & addatrow + 12) = Me.txtIngredient13.Value
я попробовал единственное, что я знаю, чтобы сделать что-то вроде этого:
for i = 1 to 32
Sheets("Recipes").Range("B" & addatrow - 1 + i) = me.txtIngredient & i.value
, который не работает. Примечание: addatrow - это переменная в макросе, которая определяет, где должен быть вставлен следующий рецепт.
Любая помощь очень ценится!
Спасибо!
просто интересен, если 'диапазон ("B" и addatrow - 1 + я)', не должны be 'range (" B "& (addatrow - 1 + i))' ?? Кроме того, вы можете использовать 'Cells (addatrow - 1 + i, 2)' –