Excel VBA素人です。VBAで図形をセンタリングする為のコードご存じの方教えてください。
C1:G8には文字(アルファベット)が入っています。
文字を検索し「A」のみの中央に図形の「〇」(※緑色)を付けたく、以下のコードを作ってみましたが、添付の写真のように、セルの中央に「〇」が付きません。Forループを使わない場合は上手くいくのですが。(尚、図形削除のボタンは無視してください)
図形を文字中央に移動するために必要なコード(Forループ内で)をご教示ください。
以下現状のコードです。
Sub まる()
Dim n As Integer
Dim d As Integer
s = 0
For d = 1 To 5
For n = 3 To 8
If Cells(d, n) = "A" Then
ActiveSheet.Shapes("まる").Copy
Cells(d, n).Select
ActiveSheet.Paste
End If
Next n
Next d
End Sub
素人ですので丁寧なご指導をお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは
Duplicate メソッド を使用した理想的な回答がされていますし
解決されているので余計な回答ですが
初心者との事で示されているコードに付け加え処理できる方法も回答します
貼り付けたShapeを取得する方法です
べたな方法も記憶に留めておくと良いかも知れません
Sub まる1()
Dim n As Integer
Dim d As Integer
s = 0
For d = 1 To 5
For n = 3 To 8
If Cells(d, n) = "A" Then
ActiveSheet.Shapes("まる").Copy
Cells(d, n).Select
ActiveSheet.Paste
With ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
.Left = Cells(d, n).Left + (Cells(d, n).Width - .Width) / 2
.Top = Cells(d, n).Top + (Cells(d, n).Height - .Height) / 2
End With
End If
Next n
Next d
Cells(d, n).Select
End Sub
追加部分
貼り付けたShapeに対して位置を指定
With ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
.Left = Cells(d, n).Left + (Cells(d, n).Width - .Width) / 2
.Top = Cells(d, n).Top + (Cells(d, n).Height - .Height) / 2
End With
終了時のShape選択解除
Cells(d, n).Select
諸々で処理手順として60点くらいかも・・・ですが
ActiveSheet.Shapes(ActiveSheet.Shapes.Count)は使う場面があるかも知れませんね
返信が遅れました事お詫びいたします。
素人の私には、このコードが解りやすく今後、他の人がメンテするにしてもメンテ性が良いと感じます。今後ご指導を乞うことが有ろうかと思いますがその時にはよろしくお願いいたします。ありがとうございました。
No.1
- 回答日時:
こんにちは
セルや図形の中央を表す属性は無いので、左、上と高さ、幅などから計算します。
例えば、水平方向なら
図形.Left + 図形.Wifth /2
みたいな感じです。
それぞれの水平・垂直の中央位置が一致するように配置すれば良いことになります。
※ 図形名称「まる」という図形がシート上に存在し、それをコピーして
使用するという条件で良いものと解釈しました。
以下のような感じでできませんか?
Sub Q13599304()
Dim sp As Shape, c As Range
Const targetRange = "C1:G8" ' 対象セル範囲
Const shapeName = "まる" ' 図形名称
For Each sp In ActiveSheet.Shapes
If sp.Name = shapeName Then Exit For
Next sp
If sp Is Nothing Then MsgBox "図形がありません": Exit Sub
For Each c In Range(targetRange)
If c.Text = "A" Then
With sp.Duplicate
.Top = c.Top + (c.Height - .Height) / 2
.Left = c.Left + (c.Width - .Width) / 2
End With
End If
Next c
End Sub
早速の返信ありがとうございます。
素晴らしい。完璧です。勉強になりました。ありがとう御座いました。また何かありましたらご教示をお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
EXCEL VBAで 図形を中央寄せに関して質問です
Excel(エクセル)
-
Excelで挿入した図をセルの中央に配置したいです
Excel(エクセル)
-
Word VBA 表内の図を一括中央揃えにするマク
Word(ワード)
-
-
4
エクセルVBAで画像を貼り付ける座標設定方法は?
PowerPoint(パワーポイント)
-
5
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
6
オートシェイプがずれる
Excel(エクセル)
-
7
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
8
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
9
VBA 選択した複数のセルにオートシェイプ(矢印)挿入について 選択したセルに無印挿入まではできたの
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCでMOUSEORG関数が上手く処...
-
sinカーブの表示のさせ方
-
変数名「cur」について
-
なぜWEBは半角カナがだめなので...
-
アルファベットに付いて質問し...
-
Access DCountでの連番について
-
Excel VBAでOpenTextのFieldInf...
-
オープンソースのオリジナルコ...
-
ASCIIコード表の出力
-
pythonで同じコード内で複数の...
-
access2003 クエリSQL文に...
-
JANコードとPOSコードは同じ?
-
何故出来ないのですか?
-
欠番の抽出について
-
VBA リストボックス(複数条件...
-
ペンダントライトのコードの色...
-
ACCESSユニオンクエリでORDER B...
-
文字列を検索しその列をコピー...
-
フィルターかけた後、重複を除...
-
差し込み後、元データを変更し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
1日に1人がこなせるプログラム...
-
Nullの使い方が不正です。
-
access2003 クエリSQL文に...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
ACCESSユニオンクエリでORDER B...
-
VBAでファイルオープン後にコー...
-
ペンダントライトのコードの色...
-
Exel VBA 別ブックから該当デ...
-
変数名「cur」について
-
特定行の背景色を変えたいのですが
-
PreviewKeyDownイベントが2回...
-
access2021 VBA メソッドまたは...
-
Accessでの抽出で完全一致。
-
VBA リストボックス(複数条件...
-
オートフィルタで抽出結果に 罫...
-
access でエラーを回避するには?
-
1、Rstudioで回帰直線を求める...
おすすめ情報