• 締切済み

マクロを使って結合セルに丸を付ける+αな難題。。

エクセルのマクロについて エクセルでセルや結合セルに丸を付ける質問はどれも見ましたが私にとって難題なものがありましたので、教えて下さい。  結合セルをマクロを使用して丸を付けるものがありますが、どなたか教えては頂けないでしょうか。初心者です、すいません。 1、ダブルクリックで結合セルに文字上に丸(太さ0.75)がつく。 2、ダブルクリックでそのセルから丸が消える。 同じ操作で1,2が繰り返される。 さらにここでもう一つ。 同シート内の※別の場所の結合セルに【データ】の【入力規制】で(リスト)を選択し、リスト内に【■,○,空白,】等の内容を含んでいます。 この上の二つがどちらもちゃんと使える方法が分かりません。 教えては頂けないでしょうか。 ちなみに参考までにマクロはこれを使っています。 正しいマクロを教えて下さい。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim Shp As Shape Cancel = True If ActiveSheet.Shapes.Count <> 0 Then For Each Shp In ActiveSheet.Shapes If Target.Address = Shp.TopLeftCell.Address Then Select Case Shp.Line.DashStyle Case 1: Shp.Delete: Exit Sub Case 4: Shp.Delete: Exit Sub End Select End If Next End If With ActiveSheet.Shapes.AddShape(msoShapeOval, Target.Left, Target.Top, Target.Width, Target.Height) .Fill.Visible = msoFalse .Line.Weight = 0.75 End With End Sub これと入力規制を使おうとしたら、マクロがデバックになってしまい使用できません。 入力規制は残ったままですが、マクロが使えなくなってしまいました。 解決策、何か違うところ、教えて下さい。

みんなの回答

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.1

こんにちわ Line.DashStyleの値が、-2「マイナス2」のとき、エラーになっていたので、 先に判定するようにしました。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim Shp As Shape Cancel = True If ActiveSheet.Shapes.Count <> 0 Then For Each Shp In ActiveSheet.Shapes Select Case Shp.Line.DashStyle Case 1, 4 If Split(Target.Address, ":")(0) = Shp.TopLeftCell.Address Then Shp.Delete Exit Sub End If End Select Next End If With ActiveSheet.Shapes.AddShape(msoShapeOval, Target.Left, Target.Top, Target.Width, Target.Height) .Fill.Visible = msoFalse .Line.Weight = 0.75 End With End Sub

関連するQ&A