Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9785 / 76734 ←次へ | 前へ→

【72507】Re:選択 丸囲みについて
発言  UO3  - 12/8/18(土) 5:54 -

引用なし
パスワード
   ▼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

3 hits

【72506】選択 丸囲みについて show 12/8/18(土) 5:08 質問
【72507】Re:選択 丸囲みについて UO3 12/8/18(土) 5:54 発言
【72508】Re:選択 丸囲みについて show 12/8/18(土) 6:51 お礼
【72510】Re:選択 丸囲みについて UO3 12/8/18(土) 10:43 発言
【72526】Re:選択 丸囲みについて show 12/8/19(日) 17:43 お礼

9785 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free