[[20130323161617]] 『図形がくっついてしまう』(ss) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『図形がくっついてしまう』(ss)

Excel2013
Windows7

図形で四角と直線を書いて、
直線の端点を編集で、四角の近くに持っていくと、
四角の4辺に小さな点が表示されて、直線がその点にくっついてしまいます。
(丸やその他の図形でも同じ)

細かい図面を書こうとすると、この機能が逆にジャマになってしまうのですが、
このお節介を止める方法が分かりません。

オプション当たりにあるかと思いましたが、見あたらないようです。
どなたか、おわかりの方はいらっしゃいますでしょうか?


 設定は描画ツールの「配置」→「図形に位置を合わせる」がONになっているのではないでしょうか?
 そうなら、OFFにしてください。
 [Alt]キーを押しながら操作すれば解除された動作になります。 (Hatch)

返信ありがとうございます。

「図形を位置に合わせる」がONでもOFFでも、くっつきます。

「Alt」キーを押しながら操作すると、今度はグリッドにくっついてしまうので、これも困ります。


Excel2013はわかりませんが、Excel2007以降は
従来あった直線は直線コネクタに統合?されていますので、
コネクタである以上、この現象は回避出来ないと思います。
フリーフォームで直線を描画されてはどうでしょうか。

(あすなろ)


いまさらですが、
四角の4辺に小さな□は確かに邪魔になることもありますね。
マクロで下記のシェイプの移動を実行 少しの移動が可能になると思います。
エクセルの新しいバージョンで動くか?ですけど

標準モジュールに
Private shrng As ShapeRange
Sub シェイプの移動() 'アクチィブセル付近にボタンが作られる。
Dim rtop As Long
Dim rlft As Long

   rtop = ActiveCell.Top
   rlft = ActiveCell.Left
   Call ボタンの削除
   With ActiveSheet
      With .Buttons.Add(10 + rlft, 10 + rtop, 110, 35) 'Left:=10, Top:=10, Width:=110,  Height:=35
          .Name = "仮ボタン1"
          .Caption = "図を選択後" & vbNewLine & "押して下さい!"
          .OnAction = "アクション"
      End With
      With .Buttons.Add(125 + rlft, 10 + rtop, 70, 20)
          .Name = "仮ボタン2"
          .Caption = "終了!"
          .OnAction = "ボタンの削除"
      End With
      With .Buttons.Add(10 + rlft, 50 + rtop, 110, 35)
          .Name = "仮ボタン3"    '.Caption = "移動レベルを↑↓で" & vbNewLine & "選択後押して下さい!"
          .OnAction = "アクション"
          .Visible = False
      End With
      With .Buttons.Add(150 + rlft, 35 + rtop, 20, 20)
          .Name = "仮ボタン4"
          .Caption = "↑"
          .OnAction = "アクション"
          .Visible = False
      End With
      With .Buttons.Add(150 + rlft, 65 + rtop, 20, 20)
          .Name = "仮ボタン5"
          .Caption = "↓"
          .OnAction = "アクション"
          .Visible = False
      End With
      With .Buttons.Add(125 + rlft, 50 + rtop, 20, 20)
          .Name = "仮ボタン6"       '.Caption = "→"
          .OnAction = "アクション"
          .Visible = False
      End With
      With .Buttons.Add(175 + rlft, 50 + rtop, 20, 20)
          .Name = "仮ボタン7"
          .Caption = "→"
          .OnAction = "アクション"
          .Visible = False
      End With
   End With
End Sub
Sub ボタンの削除()
   Dim i As Long
   With ActiveSheet
On Error Resume Next
      For i = 1 To 7
            .Buttons("仮ボタン" & i).Delete
      Next i
On Error GoTo 0
   End With
   Set shrng = Nothing
End Sub
Sub アクション()
   Dim i  As Long
   Dim sv
   With ActiveSheet
      sv = Split(.Buttons("仮ボタン3").Caption, vbNewLine)
      Select Case Right(.Buttons(Application.Caller).Name, 1)
         Case 1
            If Not VarType(Selection) = vbObject Then
               .Buttons("仮ボタン1").Caption = "図を選択後" & vbNewLine & "押して下さい!"
               Set shrng = Nothing
               For i = 3 To 7
                  .Buttons("仮ボタン" & i).Visible = False
               Next i
               MsgBox "図を選択して下さい": Exit Sub
            End If
            Set shrng = Selection.ShapeRange
            For i = 3 To 6
               .Buttons("仮ボタン" & i).Visible = True
            Next i
            .Buttons("仮ボタン1").Caption = Selection.ShapeRange.Count & " 個を選択中"
            .Buttons("仮ボタン3").Caption = "移動レベルを↑↓で" & vbNewLine & "選択後押して下さい!"
            .Buttons("仮ボタン6").Caption = "1"
            ActiveCell.Activate
         Case 2
            .Buttons("仮ボタン3").Caption = "移動レベルは" & vbNewLine & 1
         Case 3
            If .Buttons("仮ボタン3").Caption = "移動レベルを↑↓で" & vbNewLine & "選択後押して下さい!" Then
               .Buttons("仮ボタン3").Caption = "移動レベルは" & vbNewLine & .Buttons("仮ボタン6").Caption
               .Buttons("仮ボタン6").Caption = "←"
               .Buttons("仮ボタン7").Visible = True
            Else
               .Buttons("仮ボタン7").Visible = False
               .Buttons("仮ボタン6").Caption = 1
               .Buttons("仮ボタン3").Caption = "移動レベルを↑↓で" & vbNewLine & "選択後押して下さい!"
            End If
         Case 4
            If Right(sv(1), 1) = "!" Then
               .Buttons("仮ボタン6").Caption = .Buttons("仮ボタン6").Caption + 1
            Else
              shrng.IncrementTop sv(1) * -0.75
            End If
         Case 5
            If Right(sv(1), 1) = "!" Then
               .Buttons("仮ボタン6").Caption = IIf(.Buttons("仮ボタン6").Caption - 1 < 1, 1, .Buttons("仮ボタン6").Caption - 1)
            Else
              shrng.IncrementTop sv(1) * 0.75
            End If
         Case 6
            If Right(sv(1), 1) <> "!" Then
               shrng.IncrementLeft sv(1) * -0.75
            End If
         Case 7
            If Right(sv(1), 1) <> "!" Then
               shrng.IncrementLeft sv(1) * 0.75
            End If
      End Select
   End With
End Sub
(初)

私もこの「吸着」には参りました(※勝手にそう呼んでいます)。
以下の方法は、いかがでしょうか。
解決していたら、見流してください。

1.「枠線に合わせる」をONにします。
2.「図形を位置に合わせる」をOFFにします。
3.図形描画(たとえば直線)を選び、Altを押しながら描画開始位置にマウスを合わせ、左クリックを押します。
4.そのままAltキーを押しながら次に、合わせたい位置にマウスを合わせ、左クリックで描画完了です。
5.Altキーを押しながら、同時にシフトキーも押しながらマウスを動かせば、終点側の位置決めを水平・垂直・45度合わせで吸着されずにできます。

これで、Altを押しながらで自由に位置決めでき、グリッドに合わせたければAltを離す、という使い方ができるかと思います。

このやり方の唯一の欠点は、グリッドとテキストボックスなどが近い位置で、グリッドに合わせるという使い方をする場合は、ズームを400%にしないとテキストボックス側に吸着してしまうくらいかと思います。

(こっすぃ〜♪) 2014/05/23(金) 22:17


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.