2017-06-20 76 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

谢谢!它的工作 –