Board logo

標題: 程式執行後出現Label沒有設定物變數或With區塊變數 [打印本頁]

作者: dechiuan999    時間: 2012-12-2 07:21     標題: 程式執行後出現Label沒有設定物變數或With區塊變數

各位大大好:
[attach]13365[/attach]
  小弟想引用下列語法,但執行之後會出現
Label沒有設定物變數或With區塊變數。
Textbox值無法對應到Label.Caption內。
請問原因為何又應如何修改正確語法呢?

語法如下:

Private WithEvents myTb As MSForms.TextBox
Private WithEvents myLab As MSForms.Label
Private myCktype1 As Long
Private myCktype2 As Long
Public Property Set tb(setTb As MSForms.TextBox)

    Set myTb = setTb
   
End Property
Public Property Get tb() As MSForms.TextBox

End Property
Public Property Let ck1(setCk1 As Long)
   
    myCktype1 = setCk1
   
End Property
Public Property Set lb(setLb As MSForms.Label)
   
    Set myLab = setLb
   
End Property
Public Property Let ck2(setCk2 As Long)
   
    myCktype2 = setCk2
   
End Property
Private Sub myTb_Change()
   
   myTb.Text = UCase(myTb)
   Select Case myCktype1
   
   Case 1        
        'UserForm1.Label1.Caption = myTb.Text
        myLab.Caption = myTb.Text          '為何會出現沒有設定物變數或With區塊變數呢?        
   Case 2   
        'UserForm1.Label2.Caption = myTb.Text
        myLab.Caption = myTb.Text
   Case 3
        
        'UserForm1.Label3.Caption = myTb.Text
        myLab.Caption = myTb.Text        
   End Select            
End Sub

Private Sub UserForm_Initialize()
        
    Dim i As Long
    ReDim myTb(1 To 3)
    For i = 1 To 3
        Set myTb(i) = New mTxtClass
        Set myTb(i).tb = Me.Controls("Textbox" & CStr(i))
    Next
   
    myTb(1).ck1 = 1
    myTb(2).ck1 = 2
    myTb(3).ck1 = 3
   
    ReDim myLab(1 To 3)
    For i = 1 To 3
        Set myLab(i) = New mTxtClass
        Set myLab(i).lb = Me.Controls("Label" & CStr(i))
    Next
   
    myLab(1).ck2 = 1
    myLab(2).ck2 = 2
    myLab(3).ck2 = 3      
End Sub

謝謝各位大大!
作者: dechiuan999    時間: 2012-12-2 09:14

補充說明:
表單上有三個Textbox物件
Textbox1輸入字串時,Label1會
顯示Textbox1的字串
其它雷同
作者: kimbal    時間: 2012-12-2 10:09

回復 1# dechiuan999


    試試修改一下表單部份:
  1. Dim myControl() As mTxtClass

  2. Private Sub UserForm_Initialize()


  3.     Dim i As Long
  4.     ReDim myControl(1 To 3)
  5.     For i = 1 To 3
  6.         Set myControl(i) = New mTxtClass
  7.         Set myControl(i).tb = Me.Controls("Textbox" & CStr(i))
  8.         Set myControl(i).lb = Me.Controls("Label" & CStr(i))
  9.     Next
  10.    
  11.     myControl(1).ck1 = 1
  12.     myControl(2).ck1 = 2
  13.     myControl(3).ck1 = 3
  14.    
  15.    
  16. End Sub
複製代碼

作者: dechiuan999    時間: 2012-12-2 14:18

回復 3# kimbal


    版主大大您好:

   小弟依版主大大提供
修正之語法,已測試成功。

  小弟對物件類別還是理不出頭緒,
只能多向前輩請益及鞭策自已多加練習。

就感恩!




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