excel - 如何组合循环以将值分配给文本框
问题描述
我有这个用户表单的代码,我正试图将它减少到一个循环(因为我不知道怎么做,所以我每年只做一个循环)。
它从用户那里获取数据并将奇数文本框值存储在 Excel 表的前 6 行中。其次是excel表接下来6行中的偶数文本框编号(总共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
解决方案
不完全确定你在追求什么,但我认为你应该尝试用你的文本框来暗淡一个数组,然后为每个数组做一个,如下所示:
Dim Arr_TextStat = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, Textbox6}
For each TextBoxM in Arr_TextStat
Select Case TextBoxM.Text
Case >20
ws.Cells(y, 1).Value = Me.Controls("Textbox" & y - j).Value
y = y + 1
j = j - 1
Case > 14
ws.Cells(ay, 1).Value = Me.Controls("Textbox" & ay - aw).Value
ay = ay + 1
aw = aw - 1
End select
Next
这个想法是遍历每个文本框的值并返回一个带有您定义的案例的操作。
这就是我循环填充文本框或根据它们的值创建事件的方式。
希望能帮助到你
推荐阅读
- python - Python - 如何检查应用程序何时关闭?
- r - 使用 outer() 将函数向量映射到输入向量
- javascript - NodeJS 和 MongoDB “无法发布 /”
- sql - SQL 2 行成 1
- windows - 使用容器填充卷在 Windows 上的 Docker 中不起作用
- discord.js - TypeError:message.member.roles.some 不是函数
- python - psycopg2.errors.InvalidTextRepresentation
- node.js - 完成查询后正确关闭连接
- javascript - 如何使用 document.querySelectorAll jscript 自动单击按钮
- mysql - spring boot中的通信链路故障错误