‘在前一個表單中輸入一個數字在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
uj5u.com熱心網友回復:
For i = 0 To kIf 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控制元件來實作。
uj5u.com熱心網友回復:
神一樣的代碼uj5u.com熱心網友回復:
唉,哪怕是當最底層的碼農,也是要有基本的程式直覺的。加油啊樓主。uj5u.com熱心網友回復:
這種很簡單的呀,怎么呢?uj5u.com熱心網友回復:
謝謝!不過它沒報錯啊= =
其實還是沒太理解。那應該怎么改呢?
剛剛開始上VBA的課,小白都算不上,可能問題有點幼稚,望大神們見諒啊!
uj5u.com熱心網友回復:
額 我也覺得大家看來這問題肯定很白癡 不過剛剛開始入門 還是厚著臉皮來問問 請問我想要的功能怎么實作呢?
uj5u.com熱心網友回復:
剛開始學習,會加油的!
不過請問這個怎么改呢?= =
uj5u.com熱心網友回復:
沒關系,熟練后就基本上不這么干了........下面給一個隱藏部分的代碼,你參考一下:
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...
uj5u.com熱心網友回復:
代碼沒報錯,才說神一樣的代碼。。。
uj5u.com熱心網友回復:
我修改下你的代碼,看我這么累的原因,把分給我吧你的代碼
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
總之吧,感覺你還是從頭學一下的好,嘿嘿,幾乎找不到你代碼中正確的部分。
至于為啥沒出錯,估計是代碼部分,根本就沒有運行到。
uj5u.com熱心網友回復:
樓上不錯,一一解答了。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/105161.html
標籤:VBA
下一篇:用vb怎么撰寫間接平差
