VBA code does the following.
Modifies a Link with Data, then returns Image (the link) and pastes in onto a worksheet.
Deletes previous image in the cell where the image was pasted.
`Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“LINK”) ‘ Change “LINK” to the actual name of the worksheet
Dim LT As Worksheet
Set LT = ThisWorkbook.Sheets(“Inbound Login Card’s”)
Dim ST As Worksheet
Set ST = ThisWorkbook.Sheets(“Single Login Card”)
' Unprotect the sheet
LT.Unprotect "Password" ' Replace "YourPassword" with the actual password used to protect the sheet
Dim modifiedLink As String
Dim cellRange As Range
'''''''''''''''''''''' WINDOWS LOGIN '''''''''''''''''''''''
If Not Intersect(Target, Me.Range("C3")) Is Nothing Then
If Me.Range("C3").Value <> "" Then
Dim Windows_User As String
Dim Windows_Pass As String
Dim Windows_pic As Picture
' Get the entered values
Windows_User = "Username"
Windows_Pass = Me.Range("C3").Value
' Get the modifiedLink from Worksheet "LINK" Cell A1
modifiedLink = ws.Range("AG28").Value
' Modify the link based on the entered values
modifiedLink = Replace(modifiedLink, "data=Username%5CtPassword", "data=" & Windows_User & "%5Ct" & Windows_Pass)
' Define the cell range using Union
Set cellRange = Union(LT.Range("C8"), LT.Range("L8"), LT.Range("U8"), LT.Range("C28"), LT.Range("L28"), LT.Range("U28"), LT.Range("AD28"))
' Delete existing pictures within the cell ranges
For Each Windows_pic In LT.Pictures
For Each cell In cellRange
If Not Intersect(Windows_pic.TopLeftCell, cell) Is Nothing Then
Windows_pic.Delete
Exit For ' Exit the loop after deleting the picture
End If
Next cell
Next Windows_pic
' Insert pictures into each cell in the range
For Each cell In cellRange
Set Windows_pic = LT.Pictures.Insert(modifiedLink)
With Windows_pic
.ShapeRange.LockAspectRatio = msoTrue
.ShapeRange.Height = 32
.Left = cell.Left
.Top = cell.Top
End With
Next cell
End If
End If`
The previous images aren’t being deleted. It will be deleted in the first cell or a Cell range i.e Union(LT.Range(“C8:AA11”) but add another range in parallel and it wont delete that other range.
Any help is appreciated, Thank you. (Note: This is partial code, Sub end’s later)
nobody is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.