2017-06-20 72 views
0
Public Function LoadImage() As Object 

    For Each pics In sheetImages.Shapes 
    If (CStr(pics.Name) = CStr(currpartImage)) Then 
     Me.ImagePreview.Picture =PictureFromShape(sheetImages.Shapes(currImage)) 
     Me.ImagePreview.PictureSizeMode = 3 
     currImageRow = sheetImages.Shapes(currpartImage).TopLeftCell.row + 1 
    End If 
    Next 
End Function 

我想有一個窗體調用此函數從我的主模塊,並將它設置爲imagebox的形狀...它運行良好時,這個功能是在用戶表單代碼,但我試圖避免必須複製這個代碼爲我的所有用戶形式....當我把這個函數在用戶表單 - 「我」。 &「爲對象」被刪除有從主模塊和填充imageBox用戶窗體調用函數

+0

'Me'只在一個對象模塊(userform/sheet/class)內有效,並引用對象實例本身(在你的情況下是用戶表單)。如果你想從常規模塊的代碼中訪問某些特定的項目(控件等),那麼你應該將它作爲參數添加到你的函數中,並從調用代碼中傳遞該項目。此外它會更有意義的代碼是Sub和不是一個函數,因爲它不會返回一個值。 –

+0

我將如何訪問圖像控件?它會像Userform.Controls(ImagePreview).Picture = .... –

回答

0

參數添加到您的例行:

Public Sub LoadImage(imageControl as Object) As Object 
    For Each pics In sheetImages.Shapes 
    If (CStr(pics.Name) = CStr(currpartImage)) Then 
     imageControl .Picture =PictureFromShape(sheetImages.Shapes(currImage)) 
     imageControl .PictureSizeMode = 3 
     currImageRow = sheetImages.Shapes(currpartImage).TopLeftCell.row + 1 
    End If 
    Next 
End Sub 

從表單中調用:

LoadImage Me.ImagePreview 

您還需要通過這些中涉及的任何其他物品​​但它們不在用戶窗體的範圍之外。

+0

謝謝!它的工作 –