2
我有兩列:Excel的VBA - 插入圖像到工作表上Worksheet_Change事件,當問題
A B
1 Animal Picture
2 Lion (Lion picture)
3 Ant (Ant picture)
當我在一個新的單元格中鍵入一個動物名稱(可以說A4
),式中完美的作品:我得到圖片欄中的圖片(B
)。
如果我刪除了一個值cloumn A
(可以說我刪除了獅子),那麼獅子的圖片被刪除。
但是,當我手動編輯而不刪除A2
中的值時,新圖片與最後一張之上的B2
重疊。當我刪除A2
值時,只有最新的圖片被刪除。我必須再次刪除空單元格A2
以刪除單元格B2
中的剩餘圖片。
有什麼辦法解決這個問題嗎?
這是我目前的Worksheet_Change
事件代碼:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo son
If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
If Target.Row Mod 20 = 0 Then Exit Sub
If Not IsEmpty(Target) Then '<--| if changed cell content is not empty
With Pictures.Insert(ThisWorkbook.Path & "\" & Target.Value & ".png")
.Top = Target.Offset(0, 2).Top
.Left = Target.Offset(0, 1).Left
.ShapeRange.LockAspectRatio = msoFalse
.ShapeRange.Height = Target.Offset(0, 2).Height
.ShapeRange.Width = Target.Offset(0, 2).Width
.Name = Target.Address '<--| associate the picture to the edited cell via its address
End With
Else '<--| if cell content has been deleted
Me.Shapes(Target.Address).Delete '<--| delete the picture whose name is associated to the cell via its address
End If
Target.Offset(1, 0).Select
son:
End Sub
乍一看也許你應該總是(和做任何事情之前),刪除與您正在編輯單元格中的圖片。然後,如果編輯的單元格值是有效的,則應插入相應的圖片。這樣就不可能有圖像疊加。它有時可能是「啞巴」,因爲如果你編輯單元格並讓相同的值將刪除並插入相同的圖片。爲了避免這種情況,請查看http://stackoverflow.com/a/4668523/6671476,並驗證舊值是否與新版本不同:) – RCaetano
羅賓的答案是否幫助過你? – RCaetano