[[20200305181645]] 『移動しない図形』(欲張り爺) ページの最後に飛ぶ

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

 

『移動しない図形』(欲張り爺)

 セルの移動やスクロールに関らず図形位置を固定したい。
 更にウィンドウ枠の固定にも影響されないように。
 (枠固定が影響するか否かも分かりませんが)

 縦線・横破線でウィンドウ枠をイメージしました。
 図形を(3)へ配置。                

    (1)   |                  (3) 
         |      3月1日      |    3月2日      |  ←連結セル  
 -------------------------------------------------
          |  データ | データ  | データ  | データ | 
          |  データ | データ  | データ  |データ  |
    (2)   |                  (4)

 尚、セル移動は第3現象にある『連結日付セル』です。
 図形は【矢印】のセル横移動マクロを登録したものです。

 問題は表示画面からはみ出るセルに来た時、アクティブセルは自動的に
 スクロールされますが、同時に図形も移動してしまいます。 図形が移動
 して、時には可視範囲外になるため隠れてたりして意味を成しません。

 Windows.(Small)Scroll等での移動も同様に図形固定は出来るのでしょうか?
 宜しくお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


 UserFormに図形を貼り付ければ
(ピンク) 2020/03/05(木) 19:16

 ユーザーフォーム自体を図形にする、という手も。
 ※形は限定されます。

http://officetanaka.net/excel/vba/tips/tips74.htm
(OK) 2020/03/05(木) 20:31


ピンクさん 有難うございます。
 UseFormは入力フォームとして作成済みで、ここではコマンドボタンの利用をしています。
 実際の利用場面でもシート上に移動ボタンが有れば便利かと思い、今日一日試行錯誤していました。
 Paneオブジェクトを利用すればいいのかなと思ったりしたのですが、良く分からなず挫折。
 何れにしても『シート上の動かない図形』というのは無理なんでしょうね。

 記述中に『ユーザーフォーム自体を図形にする』を教えていただけ眺めていました。
 実際実行してみました。APIも良く分かりませんがこの様にすれば出来るんですね。
 四角形に出来れば使い道があるかと思いますが、こういうことも出来るというサンプルですね。

 再度、シート上では無理ですね。
ありがとうございました。
(欲張り爺) 2020/03/05(木) 21:16

 タイトルバーを非表示にし,ユーザーフォームの背景に矢印の画像を指定、
 とすれば、近い形になるかもしれません。
 タイトルバーの非表示もAPIを使うことになりそうです。
(OK) 2020/03/05(木) 21:56

 >四角形に出来れば使い道があるかと思いますが

 >Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _
                                                ByVal Y1 As Long, _
                                                ByVal X2 As Long, _
                                                ByVal Y2 As Long) As Long
  ↓                                               
 Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
                                                ByVal Y1 As Long, _
                                                ByVal X2 As Long, _
                                                ByVal Y2 As Long) As Long

 >OvalSet = CreateEllipticRgn(10, 10, 250, 150)
   ↓
  OvalSet = CreateRectRgn(10, 10, 250, 150)

(ピンク) 2020/03/05(木) 22:01


 OKさん、ピンクさん 有難うございます。

 四角形を試行しました。何とか真似事は出来ました。コマンドとしてスピンボタンを使用。
 フォームは極力小さいサイズとするも、Form_Clickに対応させる為には領域確保する必要。
 大きなフォームとなります。タイトルバーも邪魔です。

  >タイトルバーの非表示もAPIを使う
 これはどのようにするのでしょうか? 最後の質問です。
(欲張り爺) 2020/03/05(木) 23:00

エクセル ユーザーフォーム タイトルバー 非表示
でネット検索したら沢山事例がヒットすると思います。

一例です。※試してません。

https://hatenachips.blog.fc2.com/blog-entry-419.html
(OK) 2020/03/05(木) 23:27


 >タイトルバーも邪魔です。

 OvalSet = CreateRectRgn(10, 10, 250, 150)
                              ↑40ぐらいにすれば
(ピンク) 2020/03/05(木) 23:38

たぶんご要望とは異なるでしょうが、
矢印の操作以外で見えなくなったら1行目セルをクリックするという手段を併用
シートモジュールへ記載

Sub 移動しない図形()

    With Me
'        .Rows("1:3").Delete    'デバッグ用
        With .Range("C2:D2")
            .Merge
            .Value = "1/1"
            .AutoFill .Resize(, 50)
        End With
        .Range("C3").Select
        ActiveWindow.FreezePanes = True
        With .Shapes.AddShape(msoShapeRightArrow, .Range("H1").Left + 3, .Range("H1").Top, .Range("H1").Width - 3, .Range("H1").Height)
            .OnAction = Me.CodeName & ".矢印"
            .Name = "右"
            With .Duplicate
                .Name = "左"
                .Rotation = 180
                .Top = Me.Range("G1").Top
                .Left = Me.Range("G1").Left
            End With
        End With
        .Shapes.Range(Array("右", "左")).Group.Name = "左右"
    End With
End Sub

'もし見えなくなったら1行目をクリック
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Row = 1 Then
        Me.Shapes("左右").Left = Me.Cells(1, ActiveWindow.ScrollColumn + 4).Left
    End If
End Sub

Private Sub 矢印()

    If Application.Caller = "右" Then
        ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn + 2
    Else
        ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn - 2
    End If
    Me.Shapes("左右").Left = Me.Cells(1, ActiveWindow.ScrollColumn + 4).Left
End Sub

(kazuo) 2020/03/06(金) 07:26


 >Form_Clickに対応させる為には領域確保する必要

 UserFormを閉じる方法は幾らでもありますので領域確保は不要かと
(ピンク) 2020/03/06(金) 10:03

コメント返信:

[ 一覧(最新更新順) ]


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