質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

4回答

1067閲覧

マクロの実行させる範囲を図形内とする事はできますか?

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/02/06 08:22

編集2020/02/06 08:48

マクロを実行させる範囲を【図形内】という指示とかってできないですかね?

例えば、横はA列からC列、行は1行目から3行目の合計9セルの上に枠を配置したとして、
その枠内にあるデータだけにマクロを実行させる・・・という感じです。

なにがしたいかと言いますと・・・
データの行が不定期に今後ずっと増えていくと仮定して、
その際に「挿入」をすることで、行が増え、図形も自動で勝手に伸びると思います。
そのため、【図形内のみ限定でマクロの処理をする】というマクロが組めれば、
更新の度にマクロをいじって範囲を広げる必要がないので、手間ではないのですが。

上記が無理でも別に良い方法がありましたら教えて頂けますと幸いです。

(前提として)
・【マクロの処理を行いたいデータ】の下にも別のデータがあるので、範囲指定をしないといけない。
・見た目の問題で、ある程度余白をもってセルを開けておく・・・という事もしてはいけない。
・下のものを別のシートで管理する(移動させる)などもできない。

という条件でお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

図形の乗っているセル範囲
四角、三角、丸と確認してみてくださいね。

Private Sub CommandButton1_Click() Dim shp As Shape Dim rng As Range Dim row_T As Long Dim col_T As Long Dim row_B As Long Dim col_B As Long row_a = Rows.Count col_a = Columns.Count row_z = 1 col_z = 1 For Each shp In ActiveSheet.Shapes With shp With .TopLeftCell row_T = .Row col_T = .Column End With With .BottomRightCell row_B = .Row col_B = .Column End With Set rng = Range(Cells(row_T, col_T), Cells(row_B, col_B)) MsgBox shp.Name & " / " & rng.Address(False, False) End With Next shp End Sub

投稿2020/02/10 06:55

sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

A1からC3を選択し名前の定義で名前を付ける(例TG)

Private

1 ltr = Range("TG").EntireRow.Row ' 左上行 2 ltc = Range("TG").EntireColumn.Column ' 左上列 3 rbr = ltr + Range("TG").Rows.Count - 1 ' .Countでは1から数えてしまうのでマイナス1 右下行 4 rbc = ltc + Range("TG").Columns.Count - 1 ' .Countでは1から数えてしまうのでマイナス1 右下列 5 For Col = ltc To rbc 6 Sum = 0 7 For Row = ltr To rbr 8 MsgBox Col & "," & Row & "," & Cells(Row, Col).Value 9 Next 10 11 Next 12End Sub 13コード

行列挿入しても範囲名が追従するのですがどうですか

投稿2020/02/08 12:53

sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

図形と同じ考えですが、
範囲の左上隅と右下隅のセルにセル名(たとえば"左上隅"、"右下隅")をつける
というのはどうでしょうか?

行、列の挿入によりセルが移動してもセル名は前と同じセルにあるので
Range("左上隅")
Range("右下隅")
とすれば、左上隅、右下隅のセルがとれます。

注意点としては、範囲の外側、たとえば左上隅のすぐ上の行とか
右下隅のすぐ右の列には挿入できません。
このケースが考えられる場合はセル名をつける位置を1行1列外側にして
処理する時に1行1列内側で処理します。

投稿2020/02/07 07:27

編集2020/02/07 07:28
h.horikoshi

総合スコア505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ExcelVBA

1Sub test() 2 Dim myRng As Range 3 4 With ActiveSheet.Shapes(1) 5 Set myRng = Application.Range(.TopLeftCell, .BottomRightCell.Offset(-1, -1)) 6 End With 7 8 '動作確認用 9 With myRng 10 .Value = "てすと" 11 .Interior.Color = vbRed 12 End With 13End Sub

図形をどのように配置するかわかりませんが、
きっちりセルの枠線に合わせると、こんな感じですかね。
枠に合わせないなら、実験して微調整が必要かもですね。


追記

も~しかして、

ActiveSheet.UsedRange

でことたりるのかと?
「シート上の使用しているセル範囲」が分かればいいのかな?
セルの書式設定や事前に数式を仕込んでいると、
思い通りの結果が得られないかもしれませんが。

投稿2020/02/06 08:42

編集2020/02/08 13:24
mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問