2010-11-18 71 views
10

嵌入在工作表中sheet1我有一個表單控件組合框命名爲combobox_test,它已選擇的值xExcel的VBA:從表獲取值控制

除此之外,我也有embbeded一個按鈕,當我按它,我希望它的值爲combobox_test並將其放置在something.Rows(y)。但我無法得到它的工作,並有點沮喪。也許你可以指點我在正確的方向

Sub ButtonPressed_sample() 
    Dim value As String 

    Set putItRng = Range("theCells")   
    putItRng.Rows(1) = ActiveSheet.Shapes("combobox_test").Value   
End Sub 

任何意見?我是VBA的絕對新手,所以請儘可能詳細。由於

+0

你得到了什麼錯誤? – Panicos 2010-11-18 21:39:07

+0

運行時錯誤'438'。對象不支持此屬性或方法...並顯示行putitRng.Rows(1)= ActiveSheet.Shapes(「combobox_test」)。值 – Carlos 2010-11-18 21:40:31

回答

6

我不知道這是你想要的,但它是一個開始。 Shape對象沒有Value屬性,這是錯誤的來源。有一個棄用的DropDown對象,但仍然可用。

Sub ButtonPressed_sample() 

    Set putitrng = Range("theCells") 
    putitrng.Rows(1) = ActiveSheet.DropDowns("combobox_test").value 

End Sub 
+3

請注意,DropDowns(以及ComboBoxes,Buttons等)已棄用,因爲如果您選擇將多個形狀組合在一起,則組中的控件不會出現在這些集合對象中。 所以我想這個評論只是一個警告,不要把你的控制到任何分組的形狀,只要你使用這種方法(我自己也使用):) – Alain 2010-12-15 15:17:44

1
putItRng.Rows(1)= ActiveSheet.combobox_test.value 

嘗試:

activesheet.cells(1,putItRng.column).value=activesheet.combobox_test.value 

如果它不工作,然後你的組合框未命名「Combobox_test」

+0

雖然 – Carlos 2010-11-18 22:17:37

+0

它仍然給出相同的錯誤您必須通過ActiveWorkbook引用.Activesheet('因爲多個工作簿每個都有一個Activesheet)。行(1)爲您提供第1行中所有列的整個範圍......逐步執行此操作。嘗試使用兩個Msgbox查找問題的真正來源,一個用於左側,另一個用於上述建議分配的右側。這將更好地查明發生了什麼事。我猜你的對象命名是錯誤的。 – jpinto3912 2010-11-19 00:06:16

8
Sub QuickSelect_Change() 
     With ActiveSheet.Shapes("QuickBox") 
      MsgBox "My Selected Value " & .ControlFormat.List(.ControlFormat.ListIndex) 
     End With 
    End Sub 
3
ActiveSheet.Shapes("combobox_test").ControlFormat.ListIndex 
+0

雖然這可以回答這個問題,它會更好解釋爲什麼這是正確的解決方案。 – 2014-01-10 13:54:55

+0

最高投票答案引用了DropDowns集合,但Alain提到這已被棄用,因爲「如果您選擇將多個形狀組合在一起,則組中的控件不會出現在這些集合對象中」。形狀集合是引用組合框表單控件的另一種方式,但是卡洛斯郵政不適合我。 – rdg515 2014-01-10 14:59:44

+0

我剛剛嘗試過'ActiveSheet.Shapes(「combobox_test」).ControlFormat.Value',發現它得到了相同的結果。有些場景可能會發現這是一種更合適的編碼風格。 – 2015-09-28 14:02:16