2015-03-31 118 views
-1

我想用VBA來控制光學儀器。起初,我寫這個工作簿上的所有對象&變體,模塊1上的控制功能,用戶表單1上的UI控制。公共對象如下所示。但我發現objca無法正常工作。所以我想這可能是在這本書,module1,userform1之間交付對象的問題。Excel VBA執行儀器控制錯誤

Public objCa200 As Ca200 
Public objca As Ca 
Public objprobe As probe 
Public objmemory As Memoryter 

嘗試多次後,它通常可以用在模塊1聲明的對象,在模塊1控制功能,UserForm1上UI控制工作。 但我仍然不明白爲什麼?如果在本工作簿上聲明公共對象,任何用戶窗體或模塊都可以調用對象?

+0

你可以通過模塊名前面加上變量/函數調用模塊函數和變量:部分向下滾動到「宏/ Sub過程的放置在適當的模塊」。例如:'Module1.Ca200' http://www.mrexcel.com/forum/excel-questions/425695-global-vs-public-variable.html – user1274820 2015-03-31 15:23:39

+0

我認爲VB(或VB.NET)會更好這個比VBA選項。 VBA適合與MS Office產品一起使用,並且您可能需要做的一些事情在VBA中可能會更加困難 – FreeMan 2015-03-31 15:27:42

回答

0

雖然它並不完全明顯,但Excel對象部分應該通常用於Excel事件,而不是用於一般子例程和函數。這包括「ThisWorkbook」對象;即針對整個工作簿(又名Excel文件)觸發的Excel事件。

可以將常規函數和子例程放入一個Excel Objects對象中,但您必須將調用作爲該函數或子對象的名稱的前綴。 Sheet1.functionInSheet1(...)]。但是,將需要由多個工作表使用的子例程或函數放入其中一個命名工作表中並不合適;這會在以後的日子或其他人需要使用或修改您的Excel文件時使您感到困惑。

模塊是典型的所有工作人員功能和子程序所在的部分。這包括可能由單元格公式調用的函數,幷包括可能由UI控件調用的子例程。 Excel文件中的所有圖紙和圖表都可以訪問這些功能和子程序。假設您只定義了一個模塊,並且沒有重複的子例程/函數名稱,則不必爲這些子函數/函數調用前綴。

該範圍是獨立於公共/私人指定者。

關於範圍界定的非常詳細的介紹在下面的鏈接。 http://www.globaliconnect.com/excel/index.php?option=com_content&view=article&id=162:excel-vba-calling-sub-procedures-a-functions-placement-in-modules&catid=79&Itemid=475