返回列表 上一主題 發帖

[發問] 依條件刪除圖片

回復 1# Genie
試試看
  1. Sub DelPic()
  2.     Dim R As Range, x As Picture, D As Object
  3.     Set D = CreateObject("scripting.dictionary") '字典物件
  4.     With ActiveSheet
  5.         For Each R In .Range("b3:b" & .[b3].End(xlDown).Row)
  6.             D(R.Value) = R.Offset(, 1).Value     '字典物件:key 的item
  7.         Next
  8.         For Each x In .Pictures
  9.             If D(x.TopLeftCell.Offset(-1).Text) = "" Then x.Delete
  10.         Next
  11.     End With
  12. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 3# Genie
TopLeftCell: 圖貼上最頂端及最左端的Cell (储存格)->上一列:Offset(-1).Text,是這圖的item字串
1. 有一句看不太懂 "If D(x.TopLeftCell.Offset(-1).Text) = "" Then x.Delete"
    這是指圖上方的 item 對應到表格的 weekly 為空格的意思嗎? 對的

2.我若將 weekly 改到 D 欄 item 仍在 B 欄   
   程式碼改為 For Each R In .Range("B3:B" & .[B3].End(xlDown).Row)
                         D(R.Value) = R.Offset(, 2).Value
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 6# Genie
請再附上檔案看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2013-3-19 17:57 編輯

回復 8# Genie
請查看VBA說明 End 屬性   傳回 Range物件,該物件代表包含來源範圍之區域結尾處的儲存格。等於按 END+向上鍵、END+向下鍵、END+向左鍵或 END+向右鍵。唯讀 Range 物件。


為什麼 "For Each R In .Range("b3:b" & .[b3].End(xlDown).Row)" 要 B3:B 呢?
.[b3].End(xlDown).Row :傳回由 [b3]往下到最後一個資料的列號  ->你的檔案傳回 7
Range("這是字串")-> "b3:b" & 7-> "b3:b7"

你改為.Range("b3:b7" & .[b3].End(xlDown).Row) ->"b3:b7" & 7-> "b3:b77" : 擴大了範圍
B欄中B12="A-1",B33="B-1",B53="B-2" 的D欄都是空白
**D(R.Value) = R.Offset(, 2).Value 使得D(KEY)=空白
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題