Excel 如何组合循环以将值指定给文本框
我为一个userform编写了这段代码,我正试图将它简化为一个循环(因为我不知道如何做,我只是每年做一个循环) 它从用户处获取数据,并将奇数文本框值存储在excel工作表的前6行中。在excel工作表的下6行中紧跟偶数文本框编号(总共12个月)。每年顶部的文本框编号为奇数(89中的文本框编号为1,3,5,7,9,11;90中的文本框编号为13,15,17,19,21,23,以此类推)。我的代码会一直这样做直到达到95,但是代码太大了,可能会减少到一个循环。代码如下:Excel 如何组合循环以将值指定给文本框,excel,vba,loops,userform,Excel,Vba,Loops,Userform,我为一个userform编写了这段代码,我正试图将它简化为一个循环(因为我不知道如何做,我只是每年做一个循环) 它从用户处获取数据,并将奇数文本框值存储在excel工作表的前6行中。在excel工作表的下6行中紧跟偶数文本框编号(总共12个月)。每年顶部的文本框编号为奇数(89中的文本框编号为1,3,5,7,9,11;90中的文本框编号为13,15,17,19,21,23,以此类推)。我的代码会一直这样做直到达到95,但是代码太大了,可能会减少到一个循环。代码如下: Private Sub I
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
Private Sub Inserir\u Click()
将ws设置为工作表
设置ws=工作表(“Planilha1”)
'89
x=1
y=7
i=0
j=5
当x<7时执行此操作
ws.Cells(x,1).Value=Me.Controls(“文本框”&x+i).Value
x=x+1
i=i+1
环
当y<13时做
ws.Cells(y,1).Value=Me.Controls(“文本框”&y-j).Value
y=y+1
j=j-1
环
'90
Z=13
w=19
k=0
m=5
当Z<19时,执行此操作
ws.Cells(Z,1).Value=Me.Controls(“文本框”&Z+k).Value
Z=Z+1
k=k+1
环
当w<25时,不要这样做
ws.Cells(w,1).Value=Me.Controls(“文本框”&w-m).Value
w=w+1
m=m-1
环
'91
a=25
b=31
n=0
o=5
做一个<31的人
ws.Cells(a,1).Value=Me.Controls(“文本框”&a+n).Value
a=a+1
n=n+1
环
当b<37时做
ws.Cells(b,1).Value=Me.Controls(“文本框”&b-o).Value
b=b+1
o=o-1
环
'92
e=37
f=43
g=0
h=5
当e<43时做
ws.Cells(e,1).Value=Me.Controls(“文本框”&e+g).Value
e=e+1
g=g+1
环
当f<49时,不要这样做
ws.Cells(f,1).Value=Me.Controls(“Textbox”&f-h).Value
f=f+1
h=h-1
环
'93
aa=49
bb=55
cc=0
dd=5
当aa<55时,请执行此操作
ws.Cells(aa,1).Value=Me.Controls(“文本框”&aa+cc).Value
aa=aa+1
cc=cc+1
环
当bb<61时,不要这样做
ws.Cells(bb,1).Value=Me.Controls(“文本框”&bb-dd).Value
bb=bb+1
dd=dd-1
环
'94
xx=61
yy=67
zz=0
ww=5
当xx<67时,请执行此操作
ws.Cells(xx,1).Value=Me.Controls(“文本框”&xx+zz).Value
xx=xx+1
zz=zz+1
环
当yy<73时,请执行此操作
ws.Cells(yy,1).Value=Me.Controls(“文本框”&yy-ww.Value
yy=yy+1
ww=ww-1
环
'95
ax=73
ay=79
az=0
aw=5
在ax<79时执行此操作
ws.Cells(ax,1).Value=Me.Controls(“文本框”&ax+az).Value
ax=ax+1
az=az+1
环
在ay<85时执行
ws.Cells(ay,1).Value=Me.Controls(“文本框”&ay-aw).Value
ay=ay+1
aw=aw-1
环
端接头
不完全确定您想要的是什么,但我认为您应该尝试这样的方法,用文本框对数组进行调暗,然后对每个文本框进行调暗,例如:
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
其思想是循环遍历每个文本框的值,并返回一个包含已定义案例的操作
这就是我如何循环通过文本框填充它们或根据它们的值创建事件
希望它有帮助您可以将更改的值放在工作表上,并使用
VLOOKUP
或MATCH
检索正确的值,或者您可以使用Select..Case
语句在VBA中选择正确的值。但是,这是一个可怕的东西,期待人们通过看,你可能想看看(尤其是“最小”的部分)。也许你可以只发布2个集合,然后自己找出添加其他集合的模式。它是关于循环的。我已经更新了你的标题,以便更能代表你的问题。@ashleedawg我已经更新了你的标题,也可以更新缩进:)在你学习循环和嵌套结构的同时,我建议你也借此机会学习,这将大大帮助你编写清晰的代码。没有使用有意义的变量名那么多,但几乎;-)如果你加入一张表单的快照,展示文本框的布局和名称,这将对这个问题非常有帮助——这样我们可以帮助你弄清楚这里的模式是什么(我肯定有一个)。。。否则它看起来就像是随机计数器,不确定是否有人愿意花超过15分钟的空闲时间来解密这里发生的事情。