Board logo

標題: [發問] 請問一個UserForm與TextBox的問題 [打印本頁]

作者: dafa    時間: 2011-11-16 13:08     標題: 請問一個UserForm與TextBox的問題

請問我有一個UserForm內共有83個TextBox
我要將UserForm內所有TextBox的Locked全部TRUE或是FALSE
請各位高手幫忙一下謝謝
作者: register313    時間: 2011-11-16 13:16

用滑鼠拉出一範圍含蓋所有的TextBox
再去設定屬性
作者: dafa    時間: 2011-11-16 14:14

回復 2# register313


    感謝大大的熱心
可能是我說的不夠詳細
我的意思是當某個條件滿足後UserForm內的TextBox的LOCKED全部變TRUE或FALSE
作者: GBKEE    時間: 2011-11-16 14:20

回復 1# dafa
  1. Private Sub UserForm_Initialize()
  2.     Dim E As Control
  3.     For Each E In Me.Controls
  4.         If InStr(E.Name, "TextBox") Then E.Locked = True
  5.     Next
  6. End Sub
複製代碼

作者: dafa    時間: 2011-11-16 16:42

回復 4# GBKEE

感謝G大的教導
小弟受益良多
作者: dafa    時間: 2011-11-16 16:50

回復 4# GBKEE


    想再請問G大一個問題
如果我有100個CommandButton
每個CommandButton對應1個儲存格
例如按下CommandButton5則A5+1
按下CommandButton10則A10+1
這樣我是否程式碼要改100次
有沒有比較快的方式
作者: GBKEE    時間: 2011-11-16 17:50

本帖最後由 GBKEE 於 2011-11-16 17:55 編輯

回復 6# dafa
VBA 中加入物件類別模組 如圖


[attach]8560[/attach]



UserForm的程式碼
  1. Option Explicit
  2. Dim ButtonClass() As New TheButton
  3. 'ButtonClass變數設定為 New TheButton物件類別模組
  4. Private Sub UserForm_Initialize()
  5.     Dim E As Control, i As Integer
  6.     For Each E In Me.Controls
  7.         If InStr(E.Name, "CommandButton") Then
  8.             i = i + 1
  9.             ReDim Preserve ButtonClass(1 To i)
  10.             Set ButtonClass(i).Button = E     '指定 TheButton.Button(i) 的物件
  11.         End If
  12.     Next
  13. End Sub
複製代碼
物件類別模組的程式碼
  1. Option Explicit
  2. Public WithEvents Button As MSForms.CommandButton
  3. Private Sub Button_Click()
  4.     Dim A As Integer
  5.     'UserForm 中  CommandButton.Name                名稱      '依序為CommandButton1,CommandButton2...
  6.     A = Replace(Button.Name, "CommandButton", "")
  7.     '''''''''''或者如此也行''''''''''''''''''''''''''''''''''''''''''
  8.     'UserForm 中  CommandButton.Caption 在物件上的修飾文字  '如依序為 按鈕1,按鈕2...
  9.     'A = Replace(Button.Caption, "按鈕", "")
  10.     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  11.     Sheets(1).Cells(A, "A") = Sheets(1).Cells(A, "A") + 1

  12. End Sub
複製代碼

作者: dafa    時間: 2011-11-16 18:00

回復 7# GBKEE


    感謝G大
感覺有一點有看沒有懂
待我認真研究..消化一下
再來請教
作者: dafa    時間: 2011-11-17 12:33

回復 7# GBKEE


    請問G大

ReDim Preserve ButtonClass(1 To i)
這一巨可否講解一下
謝謝
作者: GBKEE    時間: 2011-11-17 12:59

回復 9# dafa
ReDim Preserve 陣列( 1 To i )    重新配置動態陣列變數 的維數 仍然保有原來的資料的關鍵字

ReDim 陳述式:  在程序層次中用來重新配置動態陣列變數的儲存空間
Preserve 選擇性引數。當改變原有陣列最後一維的大小時,仍然保有原來的資料的關鍵字
作者: dafa    時間: 2011-11-17 14:41

回復 10# GBKEE


    感謝G大
您真是一部活字典
真是受益良多




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