我的程式要寫成使用OptionButton做選項:
在frame5中有5個OptionButton,選擇了之後接下來會到frame28 又會有2個OptionButton做選擇
程式如下:
第一組OptionButton
'------------------------------
flg = False
i = 1
For Each opt1 In Frame5.Controls
If opt1.Value = True Then
flg = True
C_Index = opt1.Caption
Exit For
End If
If i = 6 And flg = False Then
mybtn = MsgBox(mymsg5, vbExclamation, mytitle)
Exit Sub
End If
i = i + 1
Next
'---------------------
中間有其他程式
'---------------------
第二組OptionButton
flg = False
iE = 1
For Each opt2 In Frame28.Controls
If opt2.Value = True Then '-----------------------執行到這一行卻顯示:執行階段錯誤 '438' 物件不支援此屬性或方法
flg = True 請問我該如何改?
PR_Index = opt2.Caption
Exit For
End If
If iE = 2 And flg = False Then
mybtn = MsgBox(mymsg6, vbExclamation, mytitle)
Exit Sub
End If
iE = iE + 1
Next作者: stillfish00 時間: 2013-5-31 17:33
回復 1#acdx
If TypeName(opt2) = "OptionButton" then '先確定opt2是OptionButton控制項
If opt2.Value Then '才能確定它有Value屬性
flg = True
PR_Index = opt2.Caption
Exit For
End If
End if作者: sunnyso 時間: 2013-6-1 11:59
程式不會從第一個檢查
For Each opt2 In Frame28.Controls
這是對所有在Frame28內部的控制項,除非你的Frame5又在Frame28內部,否則應該不會有你說的情況。
那,假設Frame5真的在Frame28內部,
你只想檢查Frame28內第一層的OptionButton(不含子Frame內部的OptionButton)
可以用..
For Each opt2 In Frame28.Controls
If opt2.parent is Frame28 and TypeName(opt2) = "OptionButton" then
這樣去篩選