輸入時逐步提示信息_第1頁
輸入時逐步提示信息_第2頁
輸入時逐步提示信息_第3頁
輸入時逐步提示信息_第4頁
輸入時逐步提示信息_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、技巧1輸入時逐步提示信息用戶在錄入數(shù)據(jù)時,比如在工作表中輸入產(chǎn)品名稱,除了希望有所有產(chǎn)品名稱的下拉列表供選擇外,更希望能逐步給出提示信息。比如在輸入一兩個字符后把符合條件的數(shù)據(jù)篩選 出來供選擇,最好是中英文、拼音首字母、大小寫能混合查詢,如輸入“LJ”或“六角后所有以“六角”開頭的產(chǎn)品名稱都篩選到列表中供選擇,這將大大提高錄入速度和正確率。為了達到這一目的,首先在工作簿需要有如圖1-1所示的基礎數(shù)據(jù)表。ABC1產(chǎn)品名稱輔助列2六角螺栓V1jls-l3六角螺栓-2ljls-24六角螺栓-31jls-55鋼鐵發(fā)黑劑gtfhj6四蝶形螺母fvdxlm7101不銹鋼螺栓lOlbxgls102不銹輛嫁栓

2、102bxgls9方頭螺栓ftls10帶攆螺栓dsls11塑制卜螺栓slls-112塑未卜螺栓slls-213塑房卜螺栓-3slls-314塑舉螺栓Yslls-415槽式螺栓csls16U形性uxs17法蘭面螺栓fl mis18連接副/焊釘Ijf/hd19六房螺母AST 021 jlmas-10220六角螺母AST 031jlmas-10321六角螺母AST 041 jlmas-10422開槽螺母kclm23焊接螺母hjlm圖1-1基礎數(shù)據(jù)表基礎數(shù)據(jù)表中 A列保存不重復的產(chǎn)品名稱,為了能用中英文、拼音首字母、大小寫混 合查詢,要把產(chǎn)品名稱轉(zhuǎn)換成小寫的拼音首字母保存在B歹U。步驟1:在VBE窗口

3、單擊菜單“插入” 一 “模塊”,在代碼窗口寫入下面的代碼。# 001 Public Function LChin(Str As String) As Variant# 002On Error Resume Next# 003Str = StrConv(Str, vbNarrow)#004 If Asc(Str) > 0 Or Err.Number = 1004 Then LChin =""# 005 LChin= WorksheetFunction.VLookup(Str," 口丫 ","a"" 八",&qu

4、ot;b"" 嚓","c""陰","d""翁|","e""發(fā)","f"" 揆","g"" 錯","h"" 谷","j"" 咔","k";"垃",T;"嘴","m";" 旃","n&

5、quot;;" 噢","o";" 姐","p";" 七","q";" 喧","r";" 任","s"" 他","t"" ","w""夕","x""Y","y""幣","z",2)# 006 End F

6、unction代碼解析:自定義LChin函數(shù),該函數(shù)把中文字符轉(zhuǎn)換為拼音首字母。步驟2:在VBE窗口雙擊Sheet2表,在代碼窗口寫入下面的代碼。# 001Private Sub Worksheet_Change(ByVal Target As Range)# 002Dim i As Integer# 003Dim myStr As String# 004With Target# 005 If .Column <> 1 Or .Count > 1 Then Exit Sub# 006 If WorksheetFunction.CountIf(Sheet2.Range(&quo

7、t;A:A"), .Value) > 1 Then# 007.Value =""# 008MsgBox "不能輸入重復的產(chǎn)品名稱!", 64# 009Exit Sub# 010End If# 011For i = 1 To Len(.Value)# 012 If Asc(Mid$(.Value, i, 1) > 255 Or Asc(Mid$(.Value, i, 1) < 0 Then# 013myStr = myStr & LChin(Mid$(.Value, i, 1)# 014Else# 015myStr =

8、myStr & LCase(Mid$(.Value, i, 1)# 016End If# 017Next#018.Offset(, 1).Value = myStr#019 End With#20 End Sub代碼解析:工作表的Change事件,當A列輸入不重復的產(chǎn)品名稱后,轉(zhuǎn)換成小寫的字母保存在B列的單元格中,便于以后的查詢。第11行代碼,設置事件觸發(fā)的條件,只有在A列輸入產(chǎn)品名稱后才觸發(fā)Change事件。第12行到第16行代碼,使用工作表 CountIf函數(shù)檢查輸入的產(chǎn)品名稱是否重復。第17行到第23行代碼,字符的轉(zhuǎn)換過程。首先檢查是否是中文字符,如果是使用自 定義函數(shù)LChin

9、轉(zhuǎn)換成小寫拼音首字母。如果是大寫的英文字母使用LCase函數(shù)轉(zhuǎn)換成小寫字母。第24行代碼,將轉(zhuǎn)換后的字符保存到B歹U。步驟3:基礎數(shù)據(jù)表完成后,在工作表“錄入表”中添加一個文本框控件和一個列表框 控件。在VBE窗口中雙擊Sheet1表,寫入下面的代碼。# 001 Private Sub Worksheet_SelectionChange(ByVal Target As Range)# 002 Dim i As Integer# 003 If Target.Count = 1 Then# 004 If Target.Column = 1 And Target.Row > 1 Then# 0

10、05 With Me.TextBox1# 006.Visible = True# 007.Top = Target.Top# 008.Left = Target.Left# 009.Width = Target.Width# 010.Height = Target.Height# 011.Activate# 012End With# 013With Me.ListBox1# 014.Visible = True# 015.Top= Target.Top# 016.Left= Target.Left + Target.Width# 017.Width = Target.Width# 018.He

11、ight = Target.Height * 5#019For i= 2 To Sheet2.Range("A65536").End(xlUp).Row#020.AddItem Sheet2.Cells(i, 1).Value#004 End IfNext#021# 022End With# 023Else# 024Me.ListBoxl.Clear# 025Me.TextBoxI =""# 026Me.ListBox1.Visible=False# 027Me.TextBox1.Visible = False# 028End If# 029 End I

12、f# 030 End Sub代碼解析:工作表的SelectionChange 事件,當用戶選定工作表A列第2行以下的單個單元格時,設置文本框和列表框的Visible為True,使它們成為可見的,并設置其外觀,同時給列表框加載列表項。當用戶選定其他列的單元格時隱藏文本框和列表框控件。步驟4:在設計模式下雙擊文本框,在代碼窗口寫入下面的代碼。# 001 Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)# 002Dimi As Integer# 003DimLangua

13、ge As Boolean# 004DimmyStr As String# 005 Me.ListBox1.Clear# 006WithMe.TextBox1# 007 For i = 1 To Len(.Value)# 008 If Asc(Mid$(.Value, i, 1) > 255 Or Asc(Mid$(.Value, i, 1)< 0 Then# 009Language = True# 010myStr = myStr & Mid$(.Value, i, 1)# 011Else# 012myStr = myStr & LCase(Mid$(.Value

14、, i, 1)# 013End If# 014 Next# 016 With Sheet2#017 For i = 2 To .Range("A65536").End(xlUp).Row# 018 If Language = True Then# 019If Left(.Cells(i, 1).Value, Len(myStr) = myStr Then# 020Me.ListBox1.AddItem .Cells(i, 1).Value# 021End If# 022 Else# 023If Left(.Cells(i, 2).Value, Len(myStr) = my

15、Str Then# 024Me.ListBox1.AddItem .Cells(i, 1).Value# 025End If# 026 End If# 027 Next# 028 End With# 029 End Sub代碼解析:文本框的KeyUp事件,在文本框輸入查詢條件時篩選符合條件的數(shù)據(jù)加載到列表框。第3行代碼,聲明變量Language為Boolean數(shù)據(jù)類型,在下面的代碼中使用Language的值判斷輸入的是否為中文。第5行代碼,使用 Clear方法刪除列表框所有的列表項,語法如下:object.Clear參數(shù)object是必需的,一個有效的對象。注意如果列表框綁定了數(shù)據(jù),Clear

16、方法將會失敗。第6行到第15行代碼,判斷文本框輸入的是否為中文字符。如果是中文字符,將變量Language賦值為True ,并把文本框中的字符賦給變量myStr。如果是英文字符則轉(zhuǎn)換成小寫字母后賦變量 myStr。第16行到第29行代碼,如果變量Language的值為True ,在基礎數(shù)據(jù)表的 A列中使用Left函數(shù)查找與文本框字符相符的單元格并加載到列表框,否則就在B列查找。步驟5:在設計模式下雙擊文本框,在代碼窗口寫入下面的代碼。# 001 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,ByVal S

17、hift As Integer)# 002 If KeyCode = vbKeyReturn Then# 003 Sheet1.ListBox1.Activate#5 End Sub代碼解析:文本框的KeyDown事件,當用戶在文本框中輸入完成,列表框中已顯示所需的內(nèi)容后 按回車鍵后選擇列表框。步驟6:在設計模式下雙擊列表框,在代碼窗口寫入下面的代碼# 001 Private Sub ListBox1_GotFocus()# 002On Error Resume Next# 003ListBox1.ListIndex = 0# 004 End Sub代碼解析:列表框的GotFocus事件,當用

18、戶在文本框中輸入完成按回車鍵后,選定列表框中第1個條目,方便用戶進行下一步操作。# 001 Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,ByVal Shift As Integer)# 002 If KeyCode = vbKeyReturn Then# 003 ActiveCell.Value = ListBox1.Value# 004Me.ListBox1.Clear# 005Me.TextBox1 =""# 006Me.ListBox1.Visible=False# 007Me.TextBox1.Visible = False# 008 End If# 009 End Sub代碼解析:列表框的KeyDown事件,當用戶在列表框中按下回車后將列表框選中的條目寫入到活 動工作表的單元格中,同時清空文本框和列表框內(nèi)容后隱藏,準備下一次錄入。# 001 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)# 002 ActiveCell.Value = ListBox1.Value# 003 M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論