У меня есть этот код для пользовательской формы, и я пытаюсь сократить его до одного цикла (так как я не выяснил, как это сделать, я просто сделал один цикл для каждого года).
picture
Он принимает данные от пользователя и сохраняет нечетные значения текстового поля в первых 6 строках таблицы Excel.За ними следуют четные номера текстовых полей в следующих 6 строках таблицы Excel (за 12 месяцев). Текстовые поля в верхней части каждого года имеют нечетные номера (1,3,5,7,9,11, для полей в 89; 13,15,17,19,21,23 для ящиков в 90 и т. Д.).Мой код делает это, пока не достигнет 95, но код слишком велик и может быть сведен к одному циклу.Вот код:
Private Sub Inserir_Click()
Dim ws As Worksheet
Set ws = Worksheets("Planilha1")
'89
x = 1
y = 7
i = 0
j = 5
Do While x < 7
ws.Cells(x, 1).Value = Me.Controls("Textbox" & x + i).Value
x = x + 1
i = i + 1
Loop
Do While y < 13
ws.Cells(y, 1).Value = Me.Controls("Textbox" & y - j).Value
y = y + 1
j = j - 1
Loop
'90
Z = 13
w = 19
k = 0
m = 5
Do While Z < 19
ws.Cells(Z, 1).Value = Me.Controls("Textbox" & Z + k).Value
Z = Z + 1
k = k + 1
Loop
Do While w < 25
ws.Cells(w, 1).Value = Me.Controls("Textbox" & w - m).Value
w = w + 1
m = m - 1
Loop
'91
a = 25
b = 31
n = 0
o = 5
Do While a < 31
ws.Cells(a, 1).Value = Me.Controls("Textbox" & a + n).Value
a = a + 1
n = n + 1
Loop
Do While b < 37
ws.Cells(b, 1).Value = Me.Controls("Textbox" & b - o).Value
b = b + 1
o = o - 1
Loop
'92
e = 37
f = 43
g = 0
h = 5
Do While e < 43
ws.Cells(e, 1).Value = Me.Controls("Textbox" & e + g).Value
e = e + 1
g = g + 1
Loop
Do While f < 49
ws.Cells(f, 1).Value = Me.Controls("Textbox" & f - h).Value
f = f + 1
h = h - 1
Loop
'93
aa = 49
bb = 55
cc = 0
dd = 5
Do While aa < 55
ws.Cells(aa, 1).Value = Me.Controls("Textbox" & aa + cc).Value
aa = aa + 1
cc = cc + 1
Loop
Do While bb < 61
ws.Cells(bb, 1).Value = Me.Controls("Textbox" & bb - dd).Value
bb = bb + 1
dd = dd - 1
Loop
'94
xx = 61
yy = 67
zz = 0
ww = 5
Do While xx < 67
ws.Cells(xx, 1).Value = Me.Controls("Textbox" & xx + zz).Value
xx = xx + 1
zz = zz + 1
Loop
Do While yy < 73
ws.Cells(yy, 1).Value = Me.Controls("Textbox" & yy - ww).Value
yy = yy + 1
ww = ww - 1
Loop
'95
ax = 73
ay = 79
az = 0
aw = 5
Do While ax < 79
ws.Cells(ax, 1).Value = Me.Controls("Textbox" & ax + az).Value
ax = ax + 1
az = az + 1
Loop
Do While ay < 85
ws.Cells(ay, 1).Value = Me.Controls("Textbox" & ay - aw).Value
ay = ay + 1
aw = aw - 1
Loop
End Sub