標題:
關於userform的問題
[打印本頁]
作者:
owen06
時間:
2014-3-27 11:24
標題:
關於userform的問題
各位大大,小弟做了一個userform如附件,
遇到的問題是在『股票代號』這個欄位,
如果是選擇有對應到的股票代號,下面相關的欄位就會帶出內容來,
但是如果是用自行輸入,且清單裡沒有該代號對應的資料,
下面的欄位我該怎麼設定,才能讓他把其他欄位內容清空,
而不是顯示最接近的內容,造成錯誤。
例如我輸入2354(鴻準),但清單裡並沒這檔股票的資料,
下面的欄位應該要都抓不到資料才對,
可是下面所有的內容卻都顯示2355(敬鵬)的相關資料,
這樣產出來的資料就會造成錯誤了。
煩請各位大大幫忙解惑一下,謝謝~~~
作者:
huijuang
時間:
2014-3-27 13:17
Application.VLookup(sel, Sheet1.[a3:s65536], 2, False)會傳回錯誤
但因為On Error Resume Next 的關係,所以程式仍會執行
所以在程式中增加一個判別是否有錯(如下)
Private Sub ComboBox1_Change()
Dim sel As Long
On Error Resume Next
sel = ComboBox1.Text
TextBox2 = Application.VLookup(sel, Sheet1.[a3:s65536], 2, False)
TextBox6 = Application.VLookup(sel, Sheet1.[a3:s65536], 4, False)
TextBox5 = Application.VLookup(sel, Sheet1.[a3:s65536], 9, False)
TextBox3 = Application.VLookup(sel, Sheet1.[a3:s65536], 12, False)
TextBox4 = Application.VLookup(sel, Sheet1.[a3:s65536], 13, False)
If Err <> 0 Then
TextBox2 = ""
TextBox6 = ""
TextBox5 = ""
TextBox3 = ""
TextBox4 = ""
End If
End Sub
複製代碼
作者:
owen06
時間:
2014-3-27 14:07
回復
2#
huijuang
太好了,可以了,感謝你^^
作者:
GBKEE
時間:
2014-3-27 15:49
回復
3#
owen06
Dim Rng As Range, Ar()
Private Sub UserForm_Initialize()
Ar = Array(TextBox2, TextBox6, TextBox5, TextBox3, TextBox4) '控制項置於陣列
With Sheet1
Set Rng = .[A3]
ComboBox1.RowSource = .Range("a3:a" & [a65536].End(3).Row).Address
ComboBox2.RowSource = .[iv65533:iv65536].Address
End With
End Sub
Private Sub ComboBox1_Change()
Dim sel(), i As Integer
sel = Array(2, 4, 9, 12, 13)
With ComboBox1 '.ListIndex = -1 不在清單中
For i = 0 To UBound(Ar)
Ar(i).Text = IIf(.ListIndex > -1, Rng.Offset(.ListIndex, sel(i) - 1), "")
Next
End With
'TextBox2 = Application.VLookup(sel, Sheet1.[a3:s65536], 2, False)
'TextBox6 = Application.VLookup(sel, Sheet1.[a3:s65536], 4, False)
'TextBox5 = Application.VLookup(sel, Sheet1.[a3:s65536], 9, False)
'TextBox3 = Application.VLookup(sel, Sheet1.[a3:s65536], 12, False)
'TextBox4 = Application.VLookup(sel, Sheet1.[a3:s65536], 13, False)
End Sub
複製代碼
作者:
owen06
時間:
2014-3-28 13:18
回復
4#
GBKEE
謝謝版主大大的指導,能否再順便請教一下,
我底下這個附檔裡的程式,該如何讓d1的值顯示為#n/a的時候,
讓d1的儲存格格式變為;;;
目前卡在不知該怎麼設定if [d1]= XXX
另外想請問=if(iserror(vlookup(c1,a1:b3,2,false)),"",(vlookup(c1,a1:b3,2,false))
這個公式有辦法寫在vba裡嗎?我怎麼寫都發生錯誤…
煩請抽空替小弟解答一下,謝謝
作者:
GBKEE
時間:
2014-3-28 15:20
回復
5#
owen06
If IsError([D1]) Then
'或是 If [D1].Text = "#N/A" Then
[D1] = "=IF(ISERROR(VLOOKUP(C1,A1:B3,2,FALSE)),"""",VLOOKUP(C1,A1:B3,2,FALSE))"
複製代碼
作者:
owen06
時間:
2014-3-28 15:50
回復
6#
GBKEE
瞭解了,再次謝謝版主賜教~
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)