2013-03-01 20 views
1

對不起,問這樣一個愚蠢的問題..但對於我的生活我無法得到它..我搜索了無處不在......這是我的代碼的重新創建給出相同的錯誤。這是我可以重新創建的最基本的例子。vb6,變量未定義爲標籤使用模塊

我不明白爲什麼我必須申報一個標籤? (或對象)

我想完成的是使用我的主窗體調用所有模塊。

這是FORM

'frmMain.frm 
Option Explicit 

Public Sub btnOpen_Click() 
    GetNum 
End Sub 

這是模塊

'modGet.bas 
Option Explicit 

Public Sub GetNum() 
    Dim a As String 
    Dim b As String 

    a = "hello" 
    b = "world" 
-> Label1.Caption = a 'ERROR, Compile Error, Variable not Defined. (vb6) 
    Label2.Caption = b 
End Sub 

YES,我有一個形式,具有名爲 'btnOpen' 按鈕,我有2個標籤名爲 'Label1的' & 'Label2的'

如果我添加了..

Dim Label1 As Object 'in MODULE 

我得到一個不同的錯誤.. 錯誤「91」對象變量或帶塊變量未設置

如果我把一切都在1種的形式,它的工作原理。(但我想用獨立的模塊) 我評論「OPTION EXPLICIT」...同樣的錯誤。

在另一個測試中,我得到了一個TextBox的錯誤..

TextBox1.Text = x 

一旦我得到這個答案,我能將它的一切......我敢肯定,這太簡單和伊馬感到愚蠢。 :-(

我的主要事情之一是查詢WMI,並且我得到了錯誤'91'的標籤(這是在一個For Each循環中)..但它的同樣的錯誤,它像它的馬金我聲明對象。(使用模塊)

Label1.Caption = objItem.Antecedent 

,如果有人可以幫我...

回答

2

處理使用

form1.label1.caption = a 

但要確保Form1中加載

+0

謝謝你..謝謝你...這是我在找什麼...因爲我有多個 textBoxes/Labels返回值的形式... 我已經看到,在樣品,但從來沒有使用它。 現在我知道它是什麼... 它是「FormName.ControlName.Value = Var」引用時... – SecureCloud 2013-03-02 16:45:18

+0

沒問題,隨時接受它作爲您的答案:-) – Hrqls 2013-03-02 22:09:42

4

你,因爲label1和label2,以及你對此事的其他控件不在範圍存在獲取錯誤modGet.bas。它們只能從表單中被引用(屬性被訪問或設置),當你添加Dim Label1 As Object時得到的不同錯誤是由於你定義的Label1作爲對象,而不是標籤,並且對象沒有Caption屬性。除非你有充分的理由把GetNum子文件放在.bas模塊中,否則將它移到表單中,它應該可以工作。

我修改了第二個例子。它將修改傳遞給它的字符串,當執行返回到表單時,可以將字符串分配給文本框。我反對修改另一個模塊的窗體控件,因爲它違背了encapsulation的想法。

'modGet.bas 
Option Explicit 

Public Function GetHello() As String 
    Dim strHello As String 

    strHello = "Hello" 
    GetHello = strHello 

End Function 

'frmMain.frm 
'Option Explicit 

Public Sub btnOpen_Click() 
    Label1.Caption = GetHello() 
End Sub 

有些不同。

'MyModule.bas 
Public Sub HelloWorld ByRef Value1 As String, ByVal Value2 As String) 

    On Error GoTo errHelloWorld 

    Value1 = "Hello" 
    Value2 = "World" 

    Exit Sub 

errHelloWorld: 
    ' deal with the error here 

End Sub 

'frmMain.frm 
Option Explicit 

Private Sub frmMain_Load() 
    Dim strText1 As String 
    Dim strText2 As String 

    HelloWorld(strText1, strText2) 
    Text1.Text = strText1 
    Text2.Text = strText2 
End Sub 

我還添加了基本的錯誤在第二個例子中

+0

感謝您的答覆..但是我知道如果我把它全部轉換成它的工作形式,這不是真正的代碼,但它的想法是一樣的......但是我製作的項目有許多子&功能..我想用模塊並將其分解,所以我需要幫助..我編輯知道如何使用上面的代碼我可以使它工作?我不想要1格式與4,000行代碼...我需要看到如何從模塊內引用對象,文本框和/或標籤的例子...這是我需要幫助...(請)...有人可以讓我看看使用上面的代碼來使它工作嗎? – SecureCloud 2013-03-02 00:53:28

+0

我想我問的是... 有人可以告訴我如何.. 1.)從窗體中調用'Hello World'模塊... 2)有模塊返回一個值從一個可變... 3.)並將值返回給txtBox或Label .. 我的主窗體將調用一個模塊,並運行一個子或函數 獲取該結果並填充一個txtBox或Label,然後轉到下一個 功能和做同樣的..但我的問題是 窗體和模塊之間進行通信。 如果我在窗體上聲明一個變量,我得到一個錯誤使用它在模塊 ,反之亦然,有一些我在這裏失蹤..如果我瞭解這一點,我可以將它應用於許多事情.. thx – SecureCloud 2013-03-02 02:10:23

+0

@SecureCloud請參閱我的編輯。 – jac 2013-03-02 05:31:39