VBAで図形を指定のセルに移動させる方法
- ワークシート上の図形を任意のセルで指定し、その場所に移動させたい方法を教えてください。
- 特定のセルに図形を移動させる方法を教えてください。
- VBAを使用して図形を指定したセルに移動させる方法を教えてください。
- ベストアンサー
VBA 図形の移動をセル指定にしたい
ワークシート上の図形を任意のセルで指定して その場所に移動させたいのですが 上手くいかないので質問します。 やりたいこと A1~A10セルに月・火・水・・・とランダムに 曜日が入っていて その中に、土という文字があれば その土とかかれたセルまで図形を持っていき さらにその図形をちょっと右にずらすという動きをさせたいです。 コードは下記を見て頂きたいのですが 図形の指定や図形をちょっと右にずらすのはできたのですが 土とかかれたセルの位置に持ってくるのがどうしてもできませんでした どうすれば指定した位置に図形を持ってこれるのでしょうか? すいませんがコードを記載してもらえると助かります。 回答よろしくお願いします。 Sub 図形移動() Dim a As Variant For a = 1To 10 If Cells(a, 1).Value = "土" Then ActiveSheet.Shapes("Rounded Rectangle 29").Select Selection.ShapeRange.IncrementLeft 90 End If Next a End Sub
- TaikooniQ1
- お礼率26% (37/138)
- Visual Basic
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考までに。 Sheet1に図形 長方形を貼り付け。 そのSheet1のSelectionChangeイベントに ーー Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then If Target.Value = "土" Then ActiveSheet.Shapes(1).Top = Target.Top ActiveSheet.Shapes(1).Left = Target.Offset(0, 1).Left End If End If End Sub ーー そのシート限定で、またA列限定で値が「土」のセルをクリックすると、その行のB列に図形が移動。 === しかし、シートのイベントを利用すること、Changeイベントを使う、構想に、に 不安定性から、自信がないですが。 質問者の質問の構想も、そうする理由が述べられておらず、質問説明として、不十分と感じる。 ・図形を ・その場所に移動させたい 全般に、何をしたいのか。
その他の回答 (1)
- SI299792
- ベストアンサー率48% (713/1474)
ずらす画像は、Rounded Rectangle 29固定でいいですか? ずらす位置は右へ90でいいですか。 Option Explicit ' Sub Macro1() Dim Find As Range ' Set Find = [A1:A10].Find("土", LookAt:=xlWhole) ' With ActiveSheet.Shapes("Rounded Rectangle 29") .Left = Find.Left + 90 .Top = Find.Top End With End Sub
関連するQ&A
- エクセル マクロで画像を指定したコマへ移動する
よろしくお願いします。 マクロは触ったばかりです。 何度も検索をかけたのですがどうしても うまくヒットさせることが出来ず こちらで相談させて頂くことにしました。 画像を毎回決まった大きさにトリミングし その後 その画像の左端をセルB17に移動させたいのですが マクロの記録で行うと 右へどれくらい、左へどれくらいと 指定されてしまい必ず同じ場所へ移動してくれません。 「その画像の左端をセルB17に移動」 このコードを教えてください。 出来上がっているコードは Selection.ShapeRange.PictureFormat.CropBottom = 224.39 Selection.ShapeRange.PictureFormat.CropTop = 21.6 Selection.ShapeRange.PictureFormat.CropRight = 11.4 Selection.ShapeRange.PictureFormat.CropLeft = 9.6 Selection.ShapeRange.ScaleWidth 0.76, msoFalse, msoScaleFromBottomRight Selection.ShapeRange.ScaleHeight 0.76, msoFalse, msoScaleFromTopLeft End Sub ここまでです。 (右へどれくらい移動というのは 消しました。) よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excelマクロ ○印図形を消したい
○印図形を消したい Private Sub CommandButton2_Click() ' ○印をつける Dim a As Range If TypeName(Selection) = "Range" Then Set a = Selection ActiveSheet.Shapes.AddShape(msoShapeOval, a.Left, _ a.Top, a.Width, a.Height).Select Selection.ShapeRange.Fill.Visible = msoFalse a.Select End If End Sub Private Sub CommandButton3_Click() 上記のマクロでつけた○印を下記のようなマクロで(指定の範囲のセルにつけた○印を全て)消したいのですが、上記のマクロは問題なく動作するのですが、下記のマクロがうまく動きません、どこをどのように変更したらよいのでしょうか?、どなたかご教示ください。 ' 指定したセル範囲にある図形を削除する() ' ○印の削除 指定セル範囲 = "U32:X41" With ActiveSheet Set セル範囲 = .Range(指定セル範囲) For Each 図形 In .Shapes If 図形.Type = msomsoPicture Then Set 共有セル範囲 = Intersect(Range(図形.TopLeftCell, _ 図形.BottomRightCell), セル範囲) If Not (共有セル範囲 Is Nothing) Then 図形.Delete End If End If Next End With End Sub
- ベストアンサー
- その他MS Office製品
- VBA ある日付の指定
やりたいこと 例:今日の日付が4/1ならA1セルに『A』という文字を入れる というIF文を書きたいのですができません。 この場合、2022/4/1という限定的な指定方法ではなく 4/1なら(2023年や2024年でも指定できる)という形で コードを書きたいのですができませんでした。 すいませんが回答よろしくお願い致します。 sub test() if date = 4/1 then range("A1").value="A" end if end sub
- ベストアンサー
- Visual Basic
- オートシェイブをIncrementLeftプロパテ
オートシェイブをIncrementLeftプロパティで今ある位置から指定したポイントだけ左にするのではなく、 一番左から指定したポイント分の位置を指定するプロパティを教えてください。 今は、 Sub test() ActiveSheet.Shapes.Range(Array("タイトル")).Select Selection.ShapeRange.IncrementLeft -10000 Selection.ShapeRange.IncrementLeft 40 End Sub にしてるのですが、2度手間なので、 -10000せずに、40と設定したら、 左から40の位置を指定できるプロパティを教えてください。
- ベストアンサー
- その他MS Office製品
- 図形 Selectionが省略できない VBA
「タイトル」という名の図形はシート上に存在するのですが、 Sub a() ActiveSheet.Shapes.Range(Array("タイトル")).ShapeRange.Height = 110 End Sub Sub b() ActiveSheet.Shapes.Range(Array("タイトル")).Select Selection.ShapeRange.Height = 110 End Sub aだとエラーになりますが、 bだと正常に動きます。 SelectやSelectionは省略できるものだと思ってるのですが なぜaだとエラーになるのでしょうか? 一度図形をアクティブにする動作が必要なのですか?
- ベストアンサー
- オフィス系ソフト
- VBA 図形の削除
以下のようなコードにおいて、図名を指定するのではなく、図の種類を指定して削除したいのです。 テキストボックスを消す グラフを消す オートシェイプを消す などなど、オブジェクトの種類を指定して消すようにしたいのですが、どうすれば良いですか? Sub 指定図形削除() 図名=”削除したい図形名” For Each zu In ActiveSheet.Shapes If zu.Name = 図名 Then zu.Delete Exit For End If Next End Sub
- ベストアンサー
- Visual Basic
- VBAでセル範囲条件の指定
下記のようなことを行いたいのですが、VBAの記述でうまくいかなくて困っています。 ----------------------- もし、現在選択中のセルがA1からA5の範囲にあるならば→「実行1」を行う もし、A1からA5の範囲内にないなら「実行2」を行う ------------------------ たったのこれだけのことなのですが、「A1からA5の範囲」を指定する方法がよくわかりません。 ------------------------ Sub セル範囲判定() If ActiveCell = Range("A1:A5") Then MsgBox "A1:A5がアクティブです" Else MsgBox "A1:A5がアクティブではありません" End If End Sub ------------------------- などとしてもうまくいきません。 構文が良くわかっていないので困っています。 「アクティブセルが○○なら」という部分を教えていただけると助かります。
- ベストアンサー
- オフィス系ソフト
- VBAの修正 Enterを押した後のセル移動について
以前、下記でお世話になった者です。 その節はありがとうございました。 「質問:ExcelでEnterを押したあとの移動先について06-03-07 23:03」 http://oshiete1.goo.ne.jp/qa2014068.html 「質問:No.2014068のつづきです。VBAで困ってます。06/03/09 22:06」 http://oshiete1.goo.ne.jp/qa2018448.html 当時のもので快調に使用できていましたが、社内システムの入れ替えでデータが増えたため、VBA(または関数)の修正をして使い勝手をよくしたいのです。 データシート名:[データ]に下記のコードが入っています。 シートのデータ範囲はA4:J65536で、I列に製品コードが入っています。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 11 Then Cells(ActiveCell.Row, 1).Select End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then Range("A65536").End(xlUp).Offset(, 0).Select End If End Sub このコードのおかげで「B2でEnterを押すとA列の「あ」が入っているセルに移動」できました。 これを「B2で製品コードを入力してEnterを押すと、データ範囲のI列を検索して該当レコードの行頭にセルが移動する」に変えたいのです。 ただし、I列の製品コードは1レコードにつき1コード(一品一様)ではありますが、現時点ですべてのコードづけが終わっていないためにB2で入力したものが無い確率の方が高いのです。 この場合は「あ」にセルが移動するようにしたいのですが、どのようにしたらよいのでしょうか。 ご回答よろしくお願いします。
- 締切済み
- オフィス系ソフト
- VBAでセル記入禁止
たとえば、"A1"に1を記入した場合、B1を記入不可にできるような、VBAのコードがあれば教えて欲しいです。 sub 記入不可() if range("A1").value = "A1" then B1のセルが記入できないコード end if end sub です。 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- 変化するセルが変更されたら実行、というVBAを組みたい
たとえば、このセルが変更されたら実行、というのは Private Sub WorkSheet_change (Byval Target As Range) If(Target.Address = "$D$3") Then call *** End If End Sub のようにしますよね? この場合、指定したセルは「D3」ですが、たとえば、 A列、B列、C列、D列のアクティブの行のセルが変更されたらコード実行、 というようにするにはどうしたらいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
分かりずらい質問ですいません すごくoffsetの部分が参考になりました。 回答ありがとうございます。