Помогите пожалуйста разобраться с циклом люди добрые! Есть необходимость присвоить определенной переменной последовательно 4 значения: 0,1,2,3 Причем после каждого присваивания процедура должна осуществлять переход к другому блоку операторов и помимо этого еще передавать определенные значения 4-х ячеек На практике же по понятным причинам выполняется лишь один первый переход с присваиванием значения лишь одной ячейки
Код
For u = 0 To 3
If u = 1 Then: Swar = Sheets("List").Range("FG22"): GoTo Enter:
If u = 2 Then: Swar = Sheets("List").Range("FH22"): GoTo Enter:
If u = 3 Then: Swar = Sheets("List").Range("FI22"): GoTo Enter:
If u = 0 Then: Swar = Sheets("List").Range("FF22"): GoTo Enter:
Next u
Enter:
Select Case i
Case Is < 0
Toggle1 = False
Case Is = 0
Cells(3 + u, 2).Value = Swar
Case Is <= 17 - j
Cells(3 + u, (1 + i) + (j - 1)).Value = Swar
Case Is <= 33 - j
Cells(8 + u, (1 + i) - (17 - j)).Value = Swar
Case Is <= 49 - j
Cells(13 + u, (1 + i) - (33 - j)).Value = Swar
Case Is <= 65 - j
Cells(18 + u, (1 + i) - (49 - j)).Value = Swar
Case Is <= 81 - j - (17 - j)
Cells(23 + u, (1 + i) - (65 - j)).Value = Swar
Case Is > 81 - j - (17 - j)
Toggle1 = False
End Select
это далеко не весь код но идея думаю понятная
никак не могу понять как выполнить тело этого цикла полностью? а может есть решение попроще...
в итоге в определенном месте по нажатию кнопки и в зависимости от значения счетчика i должен появиться столбик из значений 4-х ячеек:FG22,FH22,FI22,FF22
хорошо попробуем... но не совсем понятно что поставить после .Cells(22,u+?) и если с этим более менее ясно то остается вопрос как присвоить значения перменной u находящейся внутри блока Selecty Case
да это я понял но при этом в следующем блоке мне жизненно необходимо чтобы выполнился ряд операций: 1) при u=o затем вставка Swar(1) 2) при u=1 затем вставка Swar(2) и т.д.
Спасибо RAN! так просто решили задачу... а я весь день мучался... заработало на УРА!
Решение от RAN:
Код
For u = 0 To 3
If u = 1 Then: Swar = Sheets("List").Range("FG22"): GoSub Enter:
If u = 2 Then: Swar = Sheets("List").Range("FH22"): GoSub Enter:
If u = 3 Then: Swar = Sheets("List").Range("FI22"): GoSub Enter:
If u = 0 Then: Swar = Sheets("List").Range("FF22"): GoSub Enter:
Next u
Enter:
Select Case i
Case Is < 0
Toggle1 = False
Case Is = 0
Cells(3 + u, 2).Value = Swar
Case Is <= 17 - j
Cells(3 + u, (1 + i) + (j - 1)).Value = Swar
Case Is <= 33 - j
Cells(8 + u, (1 + i) - (17 - j)).Value = Swar
Case Is <= 49 - j
Cells(13 + u, (1 + i) - (33 - j)).Value = Swar
Case Is <= 65 - j
Cells(18 + u, (1 + i) - (49 - j)).Value = Swar
Case Is <= 81 - j - (17 - j)
Cells(23 + u, (1 + i) - (65 - j)).Value = Swar
Case Is > 81 - j - (17 - j)
Toggle1 = False
End Select
Return
только теперь почему то когда значение 4-й нижней ячейки столбца <>"" появляется столбец сразу из 5 строчек вместо 4-х причем значения 4 и 5 одинаковые...
нет худа без добра... но прогресс налицо глядишь еще через денек найду в чем тут дело ))))
спасибо RAN за Ваши пояснения теперь работает как часы: заменил последнюю GoSub на GoTo
Код
For u = 0 To 3
If u = 0 Then: Swar = Sheets("List").Range("FF22"): GoTo Enter:
If u = 1 Then: Swar = Sheets("List").Range("FG22"): GoSub Enter:
If u = 2 Then: Swar = Sheets("List").Range("FH22"): GoSub Enter:
If u = 3 Then: Swar = Sheets("List").Range("FI22"): GoSub Enter:
Next u
Enter:
Select Case i
Case Is < 0
Toggle1 = False
Case Is = 0
Cells(3 + u, 2).Value = Swar
Case Is <= 17 - j
Cells(3 + u, (1 + i) + (j - 1)).Value = Swar
Case Is <= 33 - j
Cells(8 + u, (1 + i) - (17 - j)).Value = Swar
Case Is <= 49 - j
Cells(13 + u, (1 + i) - (33 - j)).Value = Swar
Case Is <= 65 - j
Cells(18 + u, (1 + i) - (49 - j)).Value = Swar
Case Is <= 81 - j - (17 - j)
Cells(23 + u, (1 + i) - (65 - j)).Value = Swar
Case Is > 81 - j - (17 - j)
Toggle1 = False
End Select
Return
For u = 0 To 3
Swar = Sheets("List").Range("FF22").Offset(, u)
Select Case i
Case Is < 0
Toggle1 = False
Case Is = 0
Cells(3 + u, 2).Value = Swar
Case Is <= 17 - j
Cells(3 + u, (1 + i) + (j - 1)).Value = Swar
Case Is <= 33 - j
Cells(8 + u, (1 + i) - (17 - j)).Value = Swar
Case Is <= 49 - j
Cells(13 + u, (1 + i) - (33 - j)).Value = Swar
Case Is <= 65 - j
Cells(18 + u, (1 + i) - (49 - j)).Value = Swar
Case Is <= 81 - j - (17 - j)
Cells(23 + u, (1 + i) - (65 - j)).Value = Swar
Case Is > 81 - j - (17 - j)
Toggle1 = False
End Select
Next u
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
да этот еще более "продвинутый" вариант я б ни за что не догадался... простота* (*краткость)- сестра таланта!
PS. Единственный момент вариант от RAN лучше для меня, так как Swar у меня может принимать множество разных значений в зависимости от разных ситуаций, а для простоты я скинул лишь часть кода.... спасибо!!!