當前位置:成語大全網 - 新華字典 - 請幫分析壹下下面VBA代碼的意思求高人,最好是每條解答。

請幫分析壹下下面VBA代碼的意思求高人,最好是每條解答。

Private?Sub?ListBox1_Click()'?ListBox1_點擊事件

Range(MSTR)?=?ListBox1.Value'<單元格>區域(MSTR)=?ListBox1的值,mstr看妳的代碼的意思,是妳點擊的單元格,,但沒看到妳定義全局變量。

ListBox1.Visible?=?False'?ListBox1隱藏

TextBox1.Visible?=?False'?TextBox1隱藏

End?Sub'子程序結束

Private?Sub?TextBox1_Change()'textbox1的change事件

On?Error?Resume?Next'當錯誤?轉到?下壹個

Me.ListBox1.Clear'?清除listbox1中的值

Dim?ARR,?ARR1(),?k?As?Integer,?sss?As?String'定義變量?ARR,ARR1()-活動數組,k?為?整型值,sss?為?字符串

ARR?=?Sheets("數據").Range("F1:F2000")'?ARR=數據sheet中f1:F2000的值(這句應該有問題,可能是f1:g2000)

sss?=?Me.TextBox1.Text'把文本控件裏輸入的內容賦值給變量sss

ReDim?ARR1(1?To?UBound(ARR))'重定義數組arr1的範圍為?1?到數組arr的上標

For?X?=?1?To?UBound(ARR)'設定變量範圍為X=1到<數組上限>(ARR)

If?Asc(sss)?>?0?Then'如果?sss的第壹字母轉為數值後>0?則執行?

If?ARR(X,?1)?Like?UCase(sss)?&?"*"?Then'如果?ARR(X,1)?類似?大寫(sss)。加上通配符*進行匹配

k?=?k?+?1'k=k+1,k為計數器,

ARR1(k)?=?ARR(X,?2)'數組arr1的第k個值(即目前的最後壹個)=arr(x,2)

End?If'If判斷過程結束

Else'另外

If?ARR(X,?2)?Like?sss?&?"*"?Then'如果?ARR(X,2)?類似?sss?加上通配符(此段可精簡)

k?=?k?+?1'k=k+1

ARR1(k)?=?ARR(X,?2)'ARR1(k)=ARR(X,2)

End?If'If判斷過程結束

End?If'If判斷過程結束

Next?X'下壹個X

k?=?0'k=0

Me.ListBox1.List?=?ARR1'?listbox中列表項的值=數組arr1

End?Sub'子程序結束

Private?Sub?Worksheet_SelectionChange(ByVal?Target?As?Range)'當工作表選區發生改變時執行本程序,即工作表選擇事件

If?Target.Column?=?1?And?Target.Rows.Count?=?1?Then'如果?Target的列標=1?並且?Target的行數的計數值=1?則執行?:即點選的單元格在a列,且單元格局域是壹列,則

MSTR?=?Target.Address'MSTR=?Target的地址:該變量在頂部有引用,應定義公***變量

TextBox1.Top?=?ActiveCell.Top'?TextBox1的頂部=?活動單元格的頂部

ListBox1.Top?=?TextBox1.Top?+?TextBox1.Height'?ListBox1的頂部=?TextBox1的頂部+?TextBox1的高度:這二句是設定textbox+listbox出現的位置。應該先調用visible=true。再設置控件出現的位置。同時應該設置left。witdh等屬性。

ListBox1.Visible?=?True'?ListdBox1顯示

TextBox1.Visible?=?True'?TextBox1顯示

Else'否則

ListBox1.Visible?=?False'?ListBox1隱藏

TextBox1.Visible?=?False'?TextBox1隱藏

End?If'If判斷過程結束

End?Sub'子程序結束

Sub?AA()'子程序?AA()

MsgBox?Len("A")?&?"?-"?&?LenB("A")'彈出消息框,顯示的內容為?1-2。這裏不知道是不是有什麽特殊意義!

End?Sub'子程序結束

ARR?=?Sheets("數據").Range("F1:F2000")

這與

ARR(X,?2)?不對應,妳確定這代碼能運行嗎?

總體來說,有點亂,不知道是不是妳復制的關系

另:textbox是文本框,listbox是列表框。。

上面這段代碼的大意是:

在當前工作表點擊a列任意壹個單元格(單元格數量小於2),則顯示列表框,文本框控件。。文本框的頂部與單元格底部持平。列表框頂部接著文本底部。。

當文本框 改變值時,運行textboxchange事件,(註意,該事件是每輸壹個字符或刪除壹個字符就運行壹次),在數據表中f1:f2000區域查找當前輸入字符開頭的內容,將所有內容添加到列表框控件內。。(中間有數組做為轉接,沒有去重復)

在列表框內選擇內容,鼠標單擊時。觸發列表框單擊事件(個人感覺不太好,換成雙擊事件),把該內容添加到之前的活動單元格。控件隱藏。。