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

私のメインモジュールからこの関数を呼び出すことを試みています。この関数が入っているとうまく動作しますユーザーフォームのコードを私はすべての私のuserforms ....このコードをコピーすることを避けるためにしようとしているとき私はuserform- "私はこの機能を置く。 「オブジェクトとして」&ははメインモジュールからのuserform呼び出し関数を持っていて、imageBoxを取り込みます

+0

'Me'はオブジェクトモジュール(userform/sheet/class)内でのみ有効で、オブジェクトインスタンス自体(あなたの場合はuserform)を参照します。通常のモジュールのコードからいくつかの特定の項目(コントロールなど)にアクセスする場合は、それを関数のパラメータとして追加し、呼び出しコードから項目を渡す必要があります。また、値が返されないため、関数ではなく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

ありがとう!その働き –

関連する問題