2015-09-07 47 views
0

是否可以在VBA方法中使用變量?方法和變量

對於例如,我試圖項添加到列表:列表框 .AddItem(物品1)

QNS:我是否能夠取代 「1」 與varible:列表框& 「Varible 「 .AddItem(物品1)

Sub ThisWorks() 
Worksheets("Control Sheet").Tx_TgtRaw_FX_CA.AddItem ("Remark1") 
End Sub 
======================= 
Sub test() 
'Trying to use this as a varible instead 
X = "Tx_TgtRaw_FX_CA" 
Worksheets("Control Sheet").X.AddItem ("Remark1") 
'Error 438: Object does not support this property or method 
End Sub 
======================= 
Sub testarr() 
Dim y(0 To 2) 

Set y(0) = "Tx_TgtRaw_FX_CA" 
Worksheets("Control Sheet").y(0).AddItem ("Remark1") 
'Error 438: Object does not support this property or method 
End Sub 
+0

當然,是的。發佈一些代碼,我們可能能夠精確地指出問題所在。 –

+0

嗨馬特,謝謝你的回覆,你可以看看嗎? ============== 子ThisWorks() 工作表( 「控制薄片」)。Tx_TgtRaw_FX_CA.AddItem( 「備註1」) 結束子 ======= ======= 子testarr() 昏暗Y(0〜2) 集合Y(0)= 「Tx_TgtRaw_FX_CA」 工作表( 「控制薄片」)。Y(0).AddItem(」備註1" ) 結束子 ============== 子試驗() 「試圖以此爲varible代替 X =「Tx_TgtRaw_FX_CA」 工作表(「控制薄板」)X.AddItem(「備註1」) 「錯誤438:對象不支持此屬性或方法 結束子 –

回答

1

我不認爲任何方式,使用VBA INDIRECT變量名稱將是可能的。

一種解決方法是定義數組,並指他們的項目,例如:

Dim ListBoxes(10) as Variable 

Set ListBoxes(1) = ListBox1 
Set ListBoxes(2) = ListBox2 
(instead of preparing the array manually you can 
    also add the items programmatically to the form) 
... 

ListBoxes(i).AddItem(item1) 
+0

伴侶您好,感謝您的回覆。 我試過了,但似乎無法讓它工作。 我已將我的代碼片段添加到我的qns中。 你可以好好看看嗎? –

0

你需要循環的控制在適當的容器中,以檢查其名稱等於您需要的控件名稱。即

For Each c in Controls 
    If LCase(c.Name) = LCase("NameOfDesiredControl") Then 
     ... Work with it ... 
    End If 
Next 

這可以很容易地被翻譯成一個函數。

0

我不知道你的目標是什麼,但以下修改您發佈的代碼允許它的工作:

Option Explicit 

Sub ThisWorks() 
Worksheets("Control Sheet").Tx_TgtRaw_FX_CA.AddItem ("Remark1") 
End Sub 
'======================= 
Sub test() 
Dim X As Object 
'Trying to use this as a varible instead 
Set X = Worksheets("Control Sheet").Tx_TgtRaw_FX_CA 
X.AddItem ("Remark1") 

End Sub 
'======================= 
Sub testarr() 
Dim y(0 To 2) 

Set y(0) = Worksheets("Control Sheet").Tx_TgtRaw_FX_CA 
y(0).AddItem ("Remarkx") 
End Sub 
+0

嗨羅恩!非常感謝分享!我試圖將設置爲一個變量,因爲我有3個國家的列表框:US,CA&SG 當我嘗試將設置爲變化本身。 即。工作表(「控制表」)。* Varible * .AddItem(「Remark1」)將不會運行 –

+0

@ChristopherTeoh以CountryCode爲關鍵字的對象集合如何? –

+0

聽起來不錯!我沒有創建集合的經驗。你介意舉個例子嗎? –