1

我将图片临时放置并隐藏在 Sheet1 中。我选择这种方法是因为我不希望将图片本地存储在我的驱动器上。

然后,我有一个带有按钮的无模式用户窗体,该按钮应该将图片从 Sheet1 传输到当前的 ActiveSheet。

到目前为止,我有以下代码在关闭工作簿之前隐藏图片:('On Error' 在那里,因为根据用户的不同,图片不会总是出现在 Sheet1 中)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim tempWs As Variant
    Call HidePic
End Sub

Private Sub HidePic()
    Dim tempWs As Variant
    On Error Resume Next
    For Each tempWs In ThisWorkbook.Worksheets
        tempWs.Pictures.Visible = False
    Next
End Sub

接下来,以下代码有效,但仅适用于 Sheet1(在本例中,图片存储在其中)。当我切换到另一张纸然后点击用户窗体上的按钮时;存储在“A1”中的任何数据都被删除,但没有放置/粘贴图片。

Private Sub Pic_Click()
    Dim tempWs As Variant
    On Error Resume Next
    For Each tempWs In ThisWorkbook.Worksheets
        tempWs.Pictures.Visible = True
        tempWs.Pictures.Select
    Next

    Selection.Cut
    ActiveSheet.Range("A1").Activate
    ActiveSheet.Paste
End Sub

附加信息:我只使用“Select/Selection.Cut”而不是更短(更快?)“.Cut”,因为出于某种原因,仅使用 Cut 不会将图片放在“A1”中

4

2 回答 2

2

如果你在第一张纸上的图片被称为Picture 1你可以试试这个

Private Sub Pic_Click()
Dim objPic As Shape
On Error Resume Next
Set objPic = Sheets(1).Shapes("Picture 1")
On Error GoTo 0
If objPic Is Nothing Then Exit Sub
objPic.Copy
ActiveSheet.Range("a1").PasteSpecial
objPic.Delete
End Sub
于 2012-10-31T10:42:36.160 回答
0

您正在使用 For Each tempWs In ThisWorkbook.Worksheets 构造遍历所有工作表。这应该工作:

Dim TempSht as Worksheet
set tempSht = Thisworkbook.sheets(1)
tempsht.Pictures.Visible = True
tempsht.Pictures.Select
于 2012-10-31T10:41:11.770 回答