| 
    
     |  | ▼show さん: 
 ▼show さん:
 
 おはようございます
 
 セルの中の文字の位置の把握は(私のレベルでは)非常にやっかいなテーマです。
 前提として、
 ・運転・停止 の文字がセルの中の横位置、縦位置で左右均等、上下均等に表示されている。
 ・シートで図形を挿入したときに、塗りつぶしなしが初期値設定されている。
 ・最初に、そのセルには、○囲み図形は置かれていない。
 で、クリックという操作は、エクセル上では、扱いづらいので、ダブルクリックで。
 
 ということを前提にして、かつ、『あたらずとも遠からず』というコードです。
 シートのタブを右クリックしてコードの表示を選ぶとでてくるシートモジュールという場所に
 以下を貼り付けてみてください。
 
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim ovlName As String
 Dim l As Double, t As Double, w As Double, h As Double
 Cancel = True
 With Target
 l = .Left
 t = .Top
 w = .Width
 h = .Height
 End With
 ovlName = "ovl" & Target.Address(False, False)
 If Not IsObject(Evaluate(ovlName)) Then
 ActiveSheet.Shapes.AddShape msoShapeOval, l, t, w / 2, h
 DoEvents
 ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = ovlName
 Else
 With ActiveSheet.Shapes(ovlName)
 If Not .Visible Then
 .Visible = True
 .Left = l
 Else
 If .Left = l Then
 .Left = .Left + w / 2
 Else
 .Visible = False
 End If
 End If
 End With
 End If
 End Sub
 
 |  |