Вместо использования Line используйте Glow или Shadow с прозрачностью с низким или нулевым значением.Например, следующие 2 саба сделают Shape с именем "Picture 1" на Sheet1
, запустив или остановив светящийся с прозрачностью 0, что, мы надеемся, даст подходящий контур.
Sub MakeShapeGlow()
With Sheet1.Shapes("Picture 1").Glow
.Color.ObjectThemeColor = msoThemeColorAccent5
.Color.TintAndShade = 0
.Color.Brightness = -0.25
.Transparency = 0
.Radius = 6
End With
End Sub
Sub StopShapeGlow()
Sheet1.Shapes("Picture 1").Glow.Radius = 0
End Sub
Однако - вы, вероятно, также хотите перенести форму на передний план, чтобы другие рисунки не закрывали контур.(Вы должны иметь возможность использовать «Record Macro», чтобы получить код для этого)
Вы можете инициировать изменение следующим образом:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "Cornwall" Then
MakeShapeGlow
Else
StopShapeGlow
End If
End Sub
(Очевидно, цикл For Each
который раскрашивает все фигуры, а затем светится, поскольку фигуры, основанные на имени, такие как «Pic_Cornwall», были бы гораздо более эффективными, чем ввод новых подпрограмм и цепей If
для каждого округа)