Excel VBA質問箱 IV

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

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


1702 / 13645 ツリー ←次へ | 前へ→

【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 お礼[未読]

【72506】選択 丸囲みについて
質問  show  - 12/8/18(土) 5:08 -

引用なし
パスワード
   ひとつのセル内に[運転・停止]とあり、クリックすると[運転]を丸囲み、次のクリックで[停止]を丸囲み、次のクリックで丸囲みなしというようにしたいのですが、どのように組めばいいかわかりません。どなたかご教授願います。お願いします。

【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

【72508】Re:選択 丸囲みについて
お礼  show  - 12/8/18(土) 6:51 -

引用なし
パスワード
   ▼UO3 さん:
>
>おはようございます

朝早くからご考察いただき、ありがとうございます。
ご教授頂いた通りに入力しましたら、成功しました。
ただ、全てのセルで有効になっているので有効範囲の選択ができればありがたいです。
例えば(A1、B5、C10)だけに反映させるというふうにしたいです。
お手数お掛けして申し訳ありませんが、教えてください。
よろしくお願い致します。

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

引用なし
パスワード
   ▼show さん:

先頭(Cancel = True の上)に

If Intersect(Target, Range("A1,B5,C10")) Is Nothing Then Exit Sub

これを追加してください。

【72526】Re:選択 丸囲みについて
お礼  show  - 12/8/19(日) 17:43 -

引用なし
パスワード
   ▼UO3 さん

ありがとうございます。

大変助かりました。

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