[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックスで図形を選択』(hiro)
質問させていただきます。 いくつかの図形がシートにあります。図形一つ一つに対応したチェックボックスを 作り,チェックボックスにチェックが入っているときに,その図形が選択状態にな るようにしたいと思っています。 複数にチェックされていれば,複数の図形が選択されるようにするには,どのよう したらいいでしょうか。 ご教授よろしくお願いします。
図形を選択する目的は何でしょうか。
単純に考えると、チェックボックスで選択しなくとも直接図形を選択すればよいと 思ってしまうのですが、選択後にどのような処理をしたいのでしょうか。
それによっては内容に即した回答ができるかと思います。 (Mook)
すでに印刷された定型の用紙の所定の位置に文字を印刷するシートを作っています。 テキストボックスに入力された文字を決められた位置に印刷するために位置を微調 整をする必要があります。 エクセルの操作に不慣れな方も使えるようなシートを作るために,チェックボックスで テキストボックスを選択して,位置を微調整させたいと思っています。 (hiro)
なるほど、Excelは、印刷は不得意ですからねえ・・・。
>チェックボックスでテキストボックスを選択して,位置を微調整
もうちょっと仕様を汎用的にしました。 ユーザーフォームに位置の微調整可能な図形名の一覧を表示します。 この一覧から選択された図形の位置の微調整を可能します。 したがって、選択用のチェックボックスは不要です。
まずは、新規ブックにて試してみてください。
新規ブックには、ユーザーフォーム(UserForm1)をひとつだけ作成してください。 中のコントロールは、コードにて配置しますから、何も配置しないでください。
作成したUserForm1のモジュールに
'=================================================================================== Option Explicit Private WithEvents btn_L As MSForms.CommandButton Private WithEvents btn_R As MSForms.CommandButton Private WithEvents btn_U As MSForms.CommandButton Private WithEvents btn_D As MSForms.CommandButton Private WithEvents btn_select As MSForms.CommandButton Private mvshp As ShapeRange Const mvscale = 0.75 'ワンクリックの移動ポイント Private Sub btn_D_Click() On Error Resume Next mvshp.IncrementTop mvscale End Sub '=================================================================================== Private Sub btn_L_Click() On Error Resume Next mvshp.IncrementLeft -mvscale End Sub '=================================================================================== Private Sub btn_R_Click() On Error Resume Next mvshp.IncrementLeft mvscale End Sub '=================================================================================== Private Sub btn_U_Click() On Error Resume Next mvshp.IncrementTop -mvscale End Sub '=================================================================================== Private Sub btn_select_Click() Dim nm() As Variant Dim g0 As Long Dim g1 As Long g1 = 0 With Controls("list1") For g0 = LBound(.List()) To UBound(.List()) If .Selected(g0) Then ReDim Preserve nm(0 To g1) nm(g1) = .List(g0) g1 = g1 + 1 End If Next End With If g1 > 0 Then Set mvshp = ActiveSheet.Shapes.Range(nm()) Erase nm() Else Set mvshp = Nothing End If End Sub '=================================================================================== Private Sub UserForm_Initialize() Dim obj As Object With Me .Width = 380 .Height = 256 .Caption = "選択図形の位置微調整" End With With Controls.Add("Forms.Frame.1", , True) .Name = "frm2" .Left = 166 .Top = 42 .Width = 204 .Height = 186 .Caption = "微調整" Set btn_L = .Controls.Add("Forms.CommandButton.1", , True) With btn_L .Left = 18 .Top = 78 .Width = 65 .Height = 26 .Font.Size = 16 .Caption = "←" .TabStop = False End With Set btn_U = .Controls.Add("Forms.CommandButton.1", , True) With btn_U .Left = 84 .Top = 18 .Width = 30 .Height = 60 .Font.Size = 16 .Caption = "↑" .TabStop = False End With Set btn_R = .Controls.Add("Forms.CommandButton.1", , True) With btn_R .Left = 114 .Top = 78 .Width = 65 .Height = 26 .Font.Size = 16 .Caption = "→" .TabStop = False End With Set btn_D = .Controls.Add("Forms.CommandButton.1", , True) With btn_D .Left = 84 .Top = 104 .Width = 30 .Height = 60 .Font.Size = 16 .Caption = "↓" .TabStop = False End With End With Set btn_select = Controls.Add("Forms.CommandButton.1", , True) With btn_select .Left = 62 .Top = 18 .Width = 102 .Height = 24 .Font.Size = 9 .Caption = "微調整する図形の決定" .TabStop = False End With With Controls.Add("Forms.ListBox.1", , True) .Name = "list1" .Left = 14 .Top = 46 .Width = 150 .Height = 196 .MultiSelect = 1 .Font.Size = 11 For Each obj In ActiveSheet.DrawingObjects .AddItem obj.Name Next End With End Sub
次いで標準モジュールに
'================================================================================= Option Explicit Sub main() UserForm1.Show End Sub
これで図形位置を微調整したいシートをアクティブにして 上記のmainを実行してください。
ユーザーフォームが表示されます。
リストボックスには、位置微調整可能な図形名の一覧が表示されていますから、 微調整を行いたい図形名を選択してください。複数選択可能です。
選択が終わったら、「微調整する図形の決定」というボタンをクリックしてください。
これで図形の選択が完了です。 つまり、リストボックスで選択しただけでは、図形の選択は完了していませんので注意してください。
図形の選択が完了したなら、「微調整」の ↑、↓、←、→のボタンをクリックすることで 選択された図形が矢印の方向に微動します。
やりたいことは、こんなことでしょうか?
ichinose
いやあ,感動しました。すばらしいの一言です。私がやりたいことそのままです。 ichinoseさん,本当にありがとうございました。
(hiro)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.