[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『移動しない図形』(欲張り爺)
セルの移動やスクロールに関らず図形位置を固定したい。 更にウィンドウ枠の固定にも影響されないように。 (枠固定が影響するか否かも分かりませんが)
縦線・横破線でウィンドウ枠をイメージしました。 図形を(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
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.