Board logo

標題: [發問] (己解決!)~~有關以下2個不明白的問題.想請教各位指導一下小弟! [打印本頁]

作者: StanleyVic    時間: 2011-8-5 12:12     標題: (己解決!)~~有關以下2個不明白的問題.想請教各位指導一下小弟!

本帖最後由 StanleyVic 於 2011-8-10 17:41 編輯

1. 如下圖: 小弟寫了一個小小的操作介面:
  為什麼.每次我一login Userform , 當中的 MultiPage (演示中的第二頁) 不能正常Show出黎.
   每次都是這樣.但用戶們按了其他頁面,再返回按"它" , "它" 又可以正常出現.
  [attach]7286[/attach]


2. 如下圖 : 請問這個功能叫什麼? 想知用公式做還是VBA 寫?
   小弟很想學,望各位能給予小弟一份樣板,指導一下..
  (當用戶要輸入是, 就 Double Click 2次, 當中可以輸入文字,索引會自動顯示)
  [attach]7287[/attach]
作者: StanleyVic    時間: 2011-8-6 22:09

期望能得到各位的指導..謝謝~..
作者: StanleyVic    時間: 2011-8-9 14:47

懇請大大們 /  各同學們的指導...
(貼子不能沉下去~~~ Y-Y" 求助.求助..各位)
作者: GBKEE    時間: 2011-8-9 15:31

回復 3# StanleyVic
Q1 :沒程式碼如何修正
Q2:你描述的不清楚
作者: StanleyVic    時間: 2011-8-9 16:36

回復 4# GBKEE

謝大大的提示:因為文件過大過30m,內容有很多出入數DATA.以及各項代碼.所以暫時不便上載.
[attach]7323[/attach]


問題1. 其實一切如圖中所顯示,我在該Userform1的 multipage共建立了5個Page.但我沒有對 MultiPage1_Change 做過任何東西, 所以應該不會出現圖中的情況,所以才以GIF 格式.演示.
為何當我一Login, page2 出現畫面不能刷身的情況, 我曾認為是可能自己在 Page 中建立了 ListView , 但我 page 4 都是用ListView,所以我提問題.
再者: 如果版主認為是在代碼上出現問題.....我...我回去試一下再把文件拆開,盡量把問題帶出來.再上載到貴網上..

問題2. 這個..這個我就頭痛了,我是在公司的財務系統中看到的, 我對這個功能很感興趣, 希望可以引入自己的VBA中. 無奈,我不才. 所以在此請教各位.
圖中的演示主要是,在Userform1. Textbox1中.  如用鼠標點2下. 就會變成好像 listbox 這樣. 當你在 textbox一邊打字, 下面的Listbox Item  就會像查找一樣跑出來.  (我猜用了 like *..什麼的..) 

表逹能力有限.. 如有不便處.請各同學,大大們見諒..
作者: GBKEE    時間: 2011-8-9 17:11

本帖最後由 GBKEE 於 2011-8-9 19:10 編輯

回復 5# StanleyVic
Q2: 試試看是這樣嗎?
  1. Option Explicit
  2. Dim Ar(), At
  3. Private Sub ListBox1_Click()
  4.     TextBox1 = ListBox1.List(ListBox1.ListIndex)
  5. End Sub
  6. Private Sub TextBox1_Change()
  7.     At = Filter(Ar, TextBox1.Text, True)
  8.     If UBound(At) > -1 Then
  9.         ListBox1.List = At
  10.     Else
  11.         ListBox1.List = Ar
  12.     End If
  13. End Sub
  14. Private Sub UserForm_Initialize()
  15.     Ar = Application.WorksheetFunction.Transpose(Sheet1.Range("A:A").SpecialCells(xlCellTypeConstants))
  16.     'A欄是資料區(資料區須是連續範圍)
  17. End Sub
複製代碼

作者: StanleyVic    時間: 2011-8-10 11:34

本帖最後由 StanleyVic 於 2011-8-10 11:39 編輯

回復 6# GBKEE

  Q1: 果然給你提醒了,是我的代碼出了些問題! 雖然我沒對MultiPage1_Change做過什麼...但我的Userform_initialize 引用了With ListView1事件,可是....當我刪除後, 雖然沒再出現畫面刷新不了的情況.但無奈..出來的ListView結果有點怪.. ( 己把問題的VBA 帶出,生成附件: 煩請大大查閱及指導: [attach]7350[/attach]

代碼如下 :
  1. Private Sub UserForm_Initialize()
  2.     With ListView1
  3.         .Gridlines = True
  4.         .View = lvwReport
  5.         .ColumnHeaders.Add , , "Searching Result ...", 180
  6.     End With
  7. End Sub

  8. Private Sub ToggleButton4_Click()
  9. Dim DPC As Range
  10.     If Userform1.TextBox18.Text <> "" And ToggleButton4 = True Then
  11.         ListView1.ListItems.Clear
  12.         Userform1.ToggleButton5 = False
  13.         Userform1.ToggleButton6 = False
  14.         Userform1.ToggleButton7 = False

  15.          Sheets("Ref").Activate
  16.         For Each DPC In [J6:J3505]
  17.             If DPC Like "*" & TextBox18.Text & "*" Then
  18.                DPC.Offset(0, 2).Value = DPC.Offset(0, 0).Value
  19.                ListView1.ListItems.Add , , DPC.Value
  20.             End If
  21.         Next
  22.       Else
  23.        [L6:L3505] = ""
  24.        TextBox18.Value = ""
  25.        ListView1.ListItems.Clear
  26.     End If  
  27. End Sub
複製代碼
'------------------------------------

  Q2: 跟據你的引領,我做了個樣版,請大大過目. 但還有些地方未能解決: [attach]7351[/attach]

Q2(A): 如果我在textbox1 中 輸入 01, 我在彈出來的Listbox1 中選取了A010, 表面來看,好像己經逹到了目的,但當我想再修正時,Backspace一格,再打1時, 因為我想修正為A011時, 就出現報錯的情況.

Q2(B): 請問在Textbox中. 隨了現在的TextBox1_Change 事件外( 不段查找相關之資料外) , 可否再加入TextBox1_DblClick 呢? (可以彈出Listbox Item ),因為我想做到我"1樓Q2圖中"的功能.
作者: GBKEE    時間: 2011-8-10 14:52

回復 7# StanleyVic
Q1: 改為如此試試看
  1. Private Sub MultiPage1_Change()
  2.     If MultiPage1.Value = 1 Then
  3.         With ListView1
  4.             .Gridlines = True
  5.             .View = lvwReport
  6.             .ColumnHeaders.Add , , "Searching Result ...", 180
  7.         End With
  8.     End If
  9. End Sub
複製代碼
Q2:
  1. Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  2. If TextBox1.Value <> "" Then
  3.         ListBox1.Visible = True
  4.         At1 = Filter(Ar1, TextBox1.Text, True)
  5.         ListBox1.List = At1
  6.     Else
  7.         ListBox1.Visible = False
  8.     End If
  9. End Sub
複製代碼

作者: StanleyVic    時間: 2011-8-10 15:14

本帖最後由 StanleyVic 於 2011-8-10 15:17 編輯

回復 8# GBKEE


    感謝大大的一路的指導:  和一路的嘗試 !!! 終於解決了!!!!

Q1 : 己經可以解決了因Userform1定義ListView,而引起的不能刷新問題. 在你的引領下. 我加多了這句: ".ColumnHeaders.Clear
" , 因為每按一下,Columnheader就生成多一次!
  1. Private Sub MultiPage1_Change()

  2.    If MultiPage1.Value = 1 Then
  3.         With ListView1
  4.             .ColumnHeaders.Clear
  5.             .Gridlines = True
  6.             .View = lvwReport
  7.             .ColumnHeaders.Add , , "Searching Result ...", 180
  8.         End With
  9.     End If
  10. End Sub
複製代碼
Q2: 暫時未用大大你的指示,我用了第二個方法,   主要因為我們的代碼中.欠了ListBox1.Clear 這一句!! 解決了 Q2A 和 Q2B的兩個問題!
    Q2A : (選用了ListView後,不能作修正,否則VBA報錯 ) 和 Q2B : ( 雖然DbClick,因為Textbox己為空白,所以不過彈出 )
  1. Private Sub TextBox1_Change()
  2.     If TextBox1.Value <> "" Then
  3.         [color=Red]ListBox1.Clear[/color]
  4.         ListBox1.Visible = True
  5.         At1 = Filter(Ar1, TextBox1.Text, True)
  6.         ListBox1.List = At1
  7.     Else
  8.         ListBox1.Visible = False
  9.     End If
  10. End Sub


  11. Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  12.     ListBox1.Visible = True
  13.     ListBox1.List = Ar1
  14. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)