• 締切済み

VBA オブジェクトのマウスアップ

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

どこまで質問の意図に答えているか不安だが、WEB記事を参考にして Sheet1にコントロールImage1を貼り付ける。 そしてSheet1のImage1のイベントでMouseMoveを選び Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ’MsgBox "C3に移動" ' 図形の現在の図の位置を取得する With Sheets("Sheet1").Shapes("Image1") currTop = Cells(3, 3).Top currLeft = Cells(3, 3).Left End With ' 図形の現在の位置を上に移動する ' Top位置を小さくする With Sheets("Sheet1").Shapes("Image1") .Top = currTop .Left = currLeft End With End Sub これでデザインモードを脱して、 シートのImage1の上をMouseで動かすと、上記では、セルC3左上位置に移動する。 これだけでは、何ということはないので、どういう(場面で)使い方をするか疑問だが。

tanakanono
質問者

お礼

ActiveXを使うのもいいかもしれません。考えてみます。 やりたいことは、アドインでいろいろなことをしているうちの一つに、特定のファイルの場合に図形を配置、移動したら枠線に合わせたいです。 ユーザーは普段通りセル入力などができるのが理想です。 図形の座標をセル位置でデータ化してごにょごにょします。

関連するQ&A

  • VBA API WM_KEYDOWN

    エクセル内のオブジェクトの移動を判定するため、マウスアップを検出しようと考えています。 GetAsyncKeyStateでできるのですが、エクセルが受け取るWM_KEYDOWNを受け取る方法はないのでしょうか? そもそもWindowsがイベント待ちで動いているのに、GetAsyncKeyStateだとループ処理で監視することになるので、すっきりしません。私だけでしょうか? ちなみに、新規に図形を作ったり、図形を移動したりしたときに処理したいですが、このイベントは準備されていないですよね?

  • 大量のオブジェクトで同様のイベント処理をしたい場合の記述

    Excel VBAでフォームなどに大量のオブジェクトを配置して、各々のオブジェクトで同様のイベントを処理したいのですが、まとめて記述する方法はあるのでしょうか。 ユーザーフォーム上に大量の数値入力ボックス(TextBoxオブジェクト)を配置して、全てのボックスに同様の入力値制限を課そうとして、コードが肥大化して困っています。どうかよろしくお願い致します。 例) Sub TextBox1_change() <プロシージャー> end sub Sub TextBox2_change() <プロシージャー> end sub ・・・・・・ Sub TextBox10_change() <プロシージャー> end sub (<プロシージャー>部分は共通)のように延々と記述しなくても済む方法はあるのでしょうか。

  • シートのクリックイベントは拾えないのか?

    ExcelのVBAに関する質問です。 さきほど「セルをクリック、またはダブルクリックしたときに○○したい」という質問に回答したのですが、「セルをクリックした」というイベントを拾う方法がわからず、ダブルクリックのパターンで回答しました。 Worksheetのイベントには BeforeDobuleClick や BeforeRightClick はあるのに Click や onClick というイベントがありません。オートシェイプなどのオブジェクトやフォーム上のオブジェクトには Click イベントがあるのですが、Worksheet になぜかありません。 これまでも同様のケースがあり、ネットで検索したりしたのですが、どれも SelectionChange で代用するものでした。それだと確かにマウスで別セルを選択したときにイベントが発生しますが、 ・キーボード操作でセルを移動してもイベントが発生する ・現在選択しているセルをクリックしてもイベントが発生しない と、厳密はマウスでクリックしたときと同じ動作になりません。 確か以前の質問で「あるセルをクリックするたびに、他のセルの値をカウントアップしたい」というようなものもありました。このような場合には、やはり Click に相当するようなイベントで処理したいです。 どうにかしてWorksheetでクリックイベントを拾うことはできないのでしょうか?

  • Wordでオブジェクトとテキストの一体化

    Word2003を使用しております。 テキスト中にオブジェクト(主に図形)を挿入した文書を作成します。 作成後、テキストを追加したり、削除するとテキストとオブジェクトがバラバラになってしまいフォームが崩れてしまいます。 そのたびにオブジェクトを移動させて成形する始末。 元来、テキストとオブジェクトは別のものですが、オブジェクトをテキストと同化(一体化?)することは可能なのでしょうか? 長年出来ないと思い込んで使用しておりますが、使いづらくてたまりません。 良い方法をご存じの方、是非ご教授願います。

  • 実行状態中にオブジェクトの配置、サイズ変更はできますか?

    ご質問させていただきます。 Visual Basic 2005 を使っています。 やりたいこととは、 実行状態のフォーム(GroupBoxオブジェクト等)にTextBoxや線/円オブジェクトを置いたり、 そのオブジェクトをマウスクリックで”選択して”縦横のサイズを変更したり、位置を変更したいのです。 (できればマウス右クリックでプロパティの変更なども) 大まかに言えば、 実行状態のフォームに「デザイン状態の操作」や「Excel上の図形描画の操作」と同じようなことができるのでしょうか? (ツールボックスからデザインフォーム上へのオブジェクトの配置、配置したオブジェクトに マウスクリックをしてのサイズ変更、コピー&ペースト処理など) はじめは、直線や四角形を描画して期待通りのことができるかと思いましたが、 やはり描画した後にその線を”つまむ”ことができませんでした。 ちなみに、VB2005ではLineやShape系はないので、VB2005 PowerPacks2.0 を入れることで、 VB6でのLineコントロールみたいな動きはできました。 良いアドバイスありましたらお願いいたします。

  • VBAにて、ユーザーフォーム上のマルチページ上に配置したテキストボック

    VBAにて、ユーザーフォーム上のマルチページ上に配置したテキストボックスの番号を取得したい 例えば、userform1のmultipage1上にtextbox10というオブジェクトがあるとします。 textbox10のchangeイベントにて、この10という番号を取得したいのですが、どのような構文でできるのでしょうか?

  • エクセルでの図に移動について

    エクセル2003です。テキストボックスや図形を移動する際、セルの枠線に沿ってしか移動できなくなりました。ただし、Altキー押しながらだとスムースに移動できます。 この動きって逆じゃないでしょうか? 宜しくお願いします。

  • EXCEL  一部のオブジェクトだけを固定したい

    お世話になっております。 EXCEL2000です。 http://okweb.jp/kotaeru.php3?q=249769 ある一部のオブジェクトだけを固定したいのです。 調べましたが、すべてのオブジェクトが固定されてしまう方法だけがわかったぐらいです。 以下の方法です。 まず、図形のオートシェイプの書式設定の「保護」でロックにチェックを入れます。次にメニューの「ツール」-「保護」で「シート」を選択します。そうすると「データ」「オブジェクト」「シナリオ」と表示されますので、オブジェクトにチェックを入れてください。 データにチェックを入れてしまうとロックされているデータのセルすべてが入力不可。 また列や行を削除や幅を変更させた時に図形の大きさを変えたくない場合は、オートシェイプの書式設定のプロパティで「セルに合わせて移動やサイズ変更しない」にチェック入れておけば、図の位置や大きさはそのまま。 おでも、あくまで一部のオブジェクトだけを固定するほうほうはありますか?

  • オブジェクトの位置関係の設定条件を保存したい。

    Excel2007を使っています。 オブジェクトの位置関係の設定条件をデフォルト設定として保存する方法があればご教授お願いします。 任意の挿入した図形のサイズを【セルに合わせて移動するがサイズは変更ない】という作成条件で挿入していきたいのです。また、【縦横比を固定する】もチェックが必ず入るようにしたいです。 現状、図形を作成するごとにいちいちプロパティを開きチェックを入れないさないといけないため、し忘れなども発生し、確認するのが大変面倒です。 右クリックでの【既定の図形に設定】で保存されるかと試しましたが、反映されないようです。 上記の要望を叶える良い方法があればよろしくお願い致します。

  • エクセルの図形描画のこと

    エクセルのあるシートに、オートシェイプの図形とテキストボックスの文字が無数に描画してあります。これらを全てまとめて、"セルに合わせて移動やサイズ変更をしない"に一括変更するにはどうすればいいでしょうか? 対象オブジェクトを全てセレクト状態にしてから、マウス右クリックで"オブジェクトの書式設定"を選択してみると、対象が多すぎるようで書式設定ウインドウが出てきませんでした。