2017-03-15 80 views
0

我對VBA還是有點新鮮,而且我很難將對象定義爲形狀。我有一個帶有矩形的Excel工作表,我想從我的VBA用戶窗體中的組合框中更改此形狀的顏色。我已經嘗試了下面的代碼和其他幾種方法,但是我一直在遇到「形狀」不是類型的錯誤,並且這阻止了我使用填充等成員。這可能有助於知道我正在使用VBA 2015,因爲我知道這兩年之間存在一些差異VBA 2015「形狀」類型undefined

Dim rectangle as Shape 
rectangle = sheet1.shapes("rectangle 1") 
rectangle.Fill.Forecolor.RGB = RGB(255, 255, 255) 
+2

您需要使用'Set'關鍵字爲變量分配對象時:'設置矩形= sheet1.shapes(「矩形1」)' – tigeravatar

+0

在2015年你不需要爲了這個詞「套」分配對象。 「Let」和「set」不再受支持。工作很好,一起刪除「設置」一詞。但是仍然使用「形狀」類型,這是我遇到的問題 – Nicki

+0

在將對象分配給對象變量時,您絕對需要使用「Set」關鍵字。以下是Office 2013及更高版本MSDN網站的官方文檔:https://msdn.microsoft.com/en-us/library/office/gg251642.aspx我無法找到任何內容來支持您的聲明Let and Set is不再支持。也許在Visual Basic或.NET中,或者在創建自定義類時都是如此? – tigeravatar

回答

0

這是行得通嗎?

With sheet1.shapes("rectangle 1") 
    .Fill.Forecolor.RGB = RGB(255, 255, 255) 
End With 
+0

謝謝!我試過,我不再得到相同的錯誤,但我得到的項目未找到錯誤。你通過形狀傳遞的參數是單元名稱,對不對? – Nicki

+0

不,不是單元名稱,形狀名稱。當你點擊形狀時,它的名字應該出現在格式選項卡上的小下拉框中。 –

0

運行它以列出Sheet1上的形狀。你確定你有一個「矩形1」嗎?

Sub ListShapes() 
    For Each s In Sheets("Sheet1").Shapes 
     MsgBox s.Name 
    Next 
End Sub