‘在前一个窗体中输入一个数字在2~20之间,name是InputNumber,根据这个数字决定后一个窗体中textbox控件的行数。已经预先放好了20行2列的textbox,如果输入16,则隐藏后四行,也就是textbox17~20,37~40.
但是写了下面的的代码,却不能实现隐藏的功能,求大神搭救,看怎么改啊!
Public Sub InputCoord()
'根据上一个对话框输入的组数InputNumber,画表格,隐藏多余表格
Dim i As Integer
Dim k As Integer
k = 20 - InputNumber
For i = 0 To k
If i < k Then
Set m = 20 - i
Set n = 40 - i
TextBoxm.Visible = False
TextBoxn.Visible = False
Labelm.Visible = False
End If
Next i
'调整整个窗体长度
InputNumber3.Height = 435 - 18 * k
'调整"返回"按钮位置
BackButton3.Top = 378 - 18 * k
'调整"清空"按钮位置
ClearButton3.Top = 342 - 18 * k
'调整清空按钮位置
ComButton3.Top = 306 - 18 * k
End Sub
'点击返回按钮
Private Sub BackButton3_Click()
InputNumber3.Hide
IfYes2.Show
End Sub'点击清空按钮,弹出 ClearYes4 对话框询问是否清空
Private Sub ClearButton3_Click()
ClearYes4.Show
End Sub'点击确认按钮
Private Sub ComButton3_Click()
'遇到有未填写的表格,报错
For i = 1 To InputNumber
If (Me.Controls(("textbox" & i)) = "" Or Me.Controls(("textbox" & 20 + i)) = "") Then
MsgBox "No empty entries allowed!"
End If
Next i
'弹出 温馨提示 CommandYes4 对话框,确认数据是否有误
CommandYes4.Show
End Sub
但是写了下面的的代码,却不能实现隐藏的功能,求大神搭救,看怎么改啊!
Public Sub InputCoord()
'根据上一个对话框输入的组数InputNumber,画表格,隐藏多余表格
Dim i As Integer
Dim k As Integer
k = 20 - InputNumber
For i = 0 To k
If i < k Then
Set m = 20 - i
Set n = 40 - i
TextBoxm.Visible = False
TextBoxn.Visible = False
Labelm.Visible = False
End If
Next i
'调整整个窗体长度
InputNumber3.Height = 435 - 18 * k
'调整"返回"按钮位置
BackButton3.Top = 378 - 18 * k
'调整"清空"按钮位置
ClearButton3.Top = 342 - 18 * k
'调整清空按钮位置
ComButton3.Top = 306 - 18 * k
End Sub
'点击返回按钮
Private Sub BackButton3_Click()
InputNumber3.Hide
IfYes2.Show
End Sub'点击清空按钮,弹出 ClearYes4 对话框询问是否清空
Private Sub ClearButton3_Click()
ClearYes4.Show
End Sub'点击确认按钮
Private Sub ComButton3_Click()
'遇到有未填写的表格,报错
For i = 1 To InputNumber
If (Me.Controls(("textbox" & i)) = "" Or Me.Controls(("textbox" & 20 + i)) = "") Then
MsgBox "No empty entries allowed!"
End If
Next i
'弹出 温馨提示 CommandYes4 对话框,确认数据是否有误
CommandYes4.Show
End Sub
If i < k Then
Set m = 20 - i
Set n = 40 - i
TextBoxm.Visible = False
TextBoxn.Visible = False
Labelm.Visible = False以上代码不报错吗?暂且不论功能上用textbox实现是否妥当,如果想隐藏的话,一般用for each循环form上的controls,如果找到匹
配项就隐藏即可。循环的话也是通过遍历textbox控件来实现。
谢谢!不过它没报错啊= =
其实还是没太理解。那应该怎么改呢?
刚刚开始上VBA的课,小白都算不上,可能问题有点幼稚,望大神们见谅啊!
Sub test()
''''.......
k = InputNumber ''输入的行数
Dim bTr As Boolean
For i = 1 To 20 ''共20行
bTr = i <= k
Me.Controls("textbox" & CStr(i)).Visible = bTr
Me.Controls("textbox" & CStr(i + 20)).Visible = bTr
Next i
'''.....
End Sub
m=10时,不能用Textboxm代表textbox10...
你的代码
Public Sub InputCoord()
'根据上一个对话框输入的组数InputNumber,画表格,隐藏多余表格
Dim i As Integer
Dim k As Integer
k = 20 - InputNumber'这里,InputNumber是个textbox吗?是的话要修改为InputNumber.text(注:得到的是个文本型的数)
For i = 0 To k'因为你的k在前面部分没有得到值,VB默认为0
If i < k Then'这里你的思路乱了,因为在循环中,你的i都是小于k的,哦,最后一个是=
Set m = 20 - i'这里,VB没有这么给变量赋值的,应当是m = 20 -i
Set n = 40 - i
TextBoxm.Visible = False‘TextBoxm.这里不报错,应该是正好你有个textboxm按钮吧。估计你是想实现textbox1~N的目的,这是错的,控件不能这么调用。就算是你想得到textbox1,也应该写成“text" & i '这是大错特错的地方
TextBoxn.Visible = False
Labelm.Visible = False
End If
Next i
'调整整个窗体长度
InputNumber3.Height = 435 - 18 * k'InputNumber3你确定你真有InputNumber3这个控件吗?
'调整"返回"按钮位置
BackButton3.Top = 378 - 18 * k'BackButton3你确定你真有这个控件吗?控件的名称,要看控件的名称,而不是控件的caption
'调整"清空"按钮位置
ClearButton3.Top = 342 - 18 * k
'调整清空按钮位置
ComButton3.Top = 306 - 18 * k
End Sub
'点击返回按钮
Private Sub BackButton3_Click()
InputNumber3.Hide
IfYes2.Show
End Sub'点击清空按钮,弹出 ClearYes4 对话框询问是否清空
Private Sub ClearButton3_Click()
ClearYes4.Show
End Sub'点击确认按钮
Private Sub ComButton3_Click()
'遇到有未填写的表格,报错
For i = 1 To InputNumber
If (Me.Controls(("textbox" & i)) = "" Or Me.Controls(("textbox" & 20 + i)) = "") Then
MsgBox "No empty entries allowed!"
End If
Next i
'弹出 温馨提示 CommandYes4 对话框,确认数据是否有误
CommandYes4.Show
End Sub
总之吧,感觉你还是从头学一下的好,嘿嘿,几乎找不到你代码中正确的部分。
至于为啥没出错,估计是代码部分,根本就没有运行到。