2014-12-13 180 views
2

新創建的行我有一些問題訪問來自新創建element.This信息是我的代碼訪問從另一個子

Private Sub c1_Click() 
    Refresh 
    Timer1.Enabled = Not Timer1.Enabled 
    If Timer1.Enabled Then 
    c1.Caption = "Stop" 
    Else 
    c1.Caption = "Start" 
    End If 
    a = l.X2 - l.X1 
    choice = a 
End Sub 

Private Sub Form_Load() 
    Dim l As Line 
    Set l = Controls.Add("VB.Line", "l", Me) 
    With l 
    .X1 = 2760 
    .Y1 = 3000 
    .X2 = 5640 
    .Y2 = 3000 
    .Visible = True 
    .BorderStyle = 1 
    .BorderWidth = 2 
    .BorderColor = vbRed 
    End With 
End Sub 

當我按一下按鈕我得到一個錯誤:「所需的對象」。對形式我可以看到行,但我不能從另一個子訪問它。問題在哪裏?

+1

「在窗體上我可以看到行,但我不能從另一個子訪問它。正如C-Pound Guru所指出的那樣,除非您將該變量移出以形成等級,否則您無法通過變量「l」訪問它。但是,您可以通過控件集合(控件(「l」)。xxx = yyy')通過名稱**訪問控件本身。 – 2014-12-13 16:59:17

回答

3

Line變量l是私有的,程序和超出範圍。

Dim l As Line從移到窗體代碼模塊的頂部(任何方法或函數之外)。這將使其可用於任何方法或您的窗體上的過程:

Dim l As Line 

Private Sub c1_Click() 
    Refresh 
    Timer1.Enabled = Not Timer1.Enabled 
    If Timer1.Enabled Then 
     c1.Caption = "Stop" 
    Else 
     c1.Caption = "Start" 
    End If 
    a = l.X2 - l.X1 
    choice = a 
End Sub 

Private Sub Form_Load() 
    Set l = Controls.Add("VB.Line", "l", Me) 
    With l 
    .X1 = 2760 
    .Y1 = 3000 
    .X2 = 5640 
    .Y2 = 3000 
    .Visible = True 
    .BorderStyle = 1 
    .BorderWidth = 2 
    .BorderColor = vbRed 
    End With 
End Sub 
+0

Thanks.It工作! – 2014-12-13 15:25:53

+0

不客氣。隨意點擊複選框接受答案。 – 2014-12-13 18:13:55