返回列表 上一主題 發帖

[發問] 清除sheet內的圖片,要如何預防連command button 也一併被刪除

[發問] 清除sheet內的圖片,要如何預防連command button 也一併被刪除

我寫了一小段程式,清除SHEET內所有的圖片,但是他會連同控制的command button 也一被刪除
這種現象要如何處理?

Private Sub CommandButton_Clear_Click()
chose = MsgBox("是否清除儲存格內所有資料", vbYesNo + vbQuestion, "提示")
     Select Case chose
       Case vbYes
         Range(Cells(1, 1), Cells(65536, 256)).ClearContents '清除A1~IV65536儲存格資料
         ActiveSheet.Shapes.SelectAll                        '選擇所有圖片(Barcode)
         Selection.Delete                                    '刪除圖片
         Cells(1, 1).Select
       Case vbNo
     End Select
End Sub

ActiveSheet.Pictures.Delete

TOP

沒用阿,CommandButton 一樣會被刪掉.....

TOP

不會阿  我TEST就OK 只會刪圖片

chose = MsgBox("是否清除儲存格內所有資料", vbYesNo + vbQuestion, "提示")
     Select Case chose
       Case vbYes
         Range(Cells(1, 1), Cells(65536, 256)).ClearContents '清除A1~IV65536儲存格資料
         ActiveSheet.Pictures.Delete
         Cells(1, 1).Select
       Case vbNo
     End Select

TOP

回復 4# rouber590324

我還是會阿~
參閱附件 Book2.rar (38.95 KB)

TOP

For Each SHP In ActiveSheet.DrawingObjects
  If TypeName(SHP) = "Picture" Then SHP.Delete
Next

TOP

回復 6# 准提部林

真是謝謝幫忙,能否稍微解釋一下,雖然只有短短2行,看的我一頭霧水
現在正在GOOGLE..ing

TOP

Please read https://msdn.microsoft.com/EN-US/library/office/ff860759.aspx
Sub zz()
Dim x()
For Each s In ActiveSheet.Shapes
    If s.Type = 13 Then s.Delete
Next
End Sub

TOP

回復 7# morris_lth

DrawingObjects 為工作表中的〔全部〕〔物件〕,
使用〔編輯.到.特殊.物件〕.即可錄製程式碼!
TypeName(?) 可以取出括號內〔物件〕或〔內容〕的名稱或類型,
MsgBox TypeName(Range("A1")) 判定為 Range 物件,
MsgBox TypeName(Range("A1").Value) 則依A1輸入的〔內容〕判定其類型


試試在工作表中放不同類型的物件:
For Each SHP In ActiveSheet.DrawingObjects
  MsgBox TypeName(SHP)
Next

TOP

回復 9# 准提部林


    感謝版大,我從以前就一直不宣告程式碼,但實際上不是因為快速,而是因為不知道型態
有了TypeName,就可以知道所有的型態了,非常感謝版大

因為每次看高手寫程式碼,都會強制宣告,避免錯誤,但自己無法辦到,現在就可以知道所有的型態了,感謝版大

For Each SHP In ActiveSheet.DrawingObjects
        If TypeName(SHP) = "Picture" Then SHP.Delete
    Next

這段程式碼也很好用哦!感恩!
PKKO

TOP

        靜思自在 : 話多不如話少,話少不如話好。
返回列表 上一主題