現在下記のマクロで複数セルに一度に〇印(楕円)をつける作業をしています。
やりたいこと
①セルの幅に合わせて〇をつける(楕円ではなく円)・・・縦長のセルのため
②結合したセルには一つの〇(円)が描かれるようにする(現在はセル数分〇印が描かれてしまう)。
以上です。どなたか記述を修正していただけませんでしょうか。
Sub 選択した複数セルに〇印()
For Each r In Selection
Set s = ActiveSheet.Shapes.AddShape(msoShapeOval, r.Left, r.Top, r.Width, r.Height)
s.Fill.Visible = msoFalse
s.IncrementLeft 0
s.IncrementTop 0
With s.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
.Transparency = 0
.Weight = 1.5
End With
Next
End Sub
No.4ベストアンサー
- 回答日時:
こんにちは
>①セルの幅に合わせて〇をつける
「幅」に合わせるという決め打ちで良いのなら、No1様の回答にある通り、サイズを幅で決めるようにすればよいです。
セル形状が不明の場合は、縦横の小さい方の値を採用すれば宜しいでしょう。
表示位置をどこにするのかご質問文にないのではっきりとしませんが、左上合わせとか中央合わせとかはサイズを決めてから計算すれば良いでしょう。
>②結合したセルには一つの〇(円)が描かれるようにする
For Eachでループさせているので、結合セルの場合はその構成セル数分だけループすることになりますので、現状のままだとその個数分描かれることになります。
仮に結合セルが無くても、複数のセル範囲を重なりがあるように選択してループすると、重なっている部分は重複してカウントされるので、同様のことが発生します。
これを回避するには、選択セルの内容を解析して(結合セルを含め)重複が無いようにしてからループすれば良いですが、解析するのが結構面倒ですね。
代替案として、(効率はやや落ちますが)「セル内の作成された円」を削除してから円を描くようにすれば、結果的に必ずひとつだけ残ることになります。
以下は、そのような方法での一例です。
※ 作成する円は、セルに対して中央合わせにしてあります。
※ 非表示セルには図形を描けないので、非表示セルは飛ばしています。
(一旦、表示してから描けば描けますけれど・・)
※ 当該マクロで作成した図形以外の図形はそのまま残ります。
※ 選択内容がセル範囲ではない場合には何もしません。
Sub Sample()
Dim r As Range, c As Range, s As Shape
Dim x As Single, y As Single, z As Single
If TypeName(Selection) <> "Range" Then Exit Sub
For Each r In Selection.Cells
If Not (r.EntireRow.Hidden Or r.EntireColumn.Hidden) Then
Set c = r.MergeArea
For Each s In ActiveSheet.Shapes
If Not Intersect(c, Range(s.TopLeftCell, s.BottomRightCell)) Is Nothing Then
If s.AlternativeText = "HOGE_OVAL" Then s.Delete
End If
Next s
z = Application.Min(c.Width, c.Height) - 2
x = c.Left + (c.Width - z) / 2
y = c.Top + (c.Height - z) / 2
With ActiveSheet.Shapes.AddShape(msoShapeOval, x, y, z, z)
.Fill.Visible = msoFalse
.Line.Visible = msoTrue
.Line.ForeColor.RGB = RGB(0, 0, 0)
.Line.Transparency = 0
.Line.Weight = 1.5
.AlternativeText = "HOGE_OVAL"
End With
End If
Next r
End Sub
本当にありがとうございます。懇切丁寧なご説明までいただき感謝申し上げます。一つづつ調べながら理解しようと努めているところです。
思った通りに〇印を書くことができ大変助かりました。
No.3
- 回答日時:
#2です
動くけれど違うようなので訂正
Dim wh As Double
Property Height As Single
Excel.Shape のメンバー なので
Dim wh As Single
Set r = r.MergeArea
ループに使っているRangeオブジェクトを再セットは良くないかも知れません
新たに Rangeオブジェクト変数をたてる方が好ましいと思います
No.2
- 回答日時:
こんにちは
ちょっと改造して
Sub 選択した複数セルに〇印()
Dim r As Range, s As Shape
Dim wh As Double
For Each r In Selection
If r.Address = r.MergeArea(1).Address Then
Set r = r.MergeArea
wh = WorksheetFunction.Min(r.Width, r.Height)
Set s = ActiveSheet.Shapes.AddShape(msoShapeOval, r.Left, r.Top, wh, wh)
s.Left = r.Left + (r.Width - s.Width) / 2
s.Top = r.Top + (r.Height - s.Height) / 2
s.Fill.Visible = msoFalse
s.IncrementLeft 0
s.IncrementTop 0
With s.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
.Transparency = 0
.Weight = 1.5
End With
End If
Next
End Sub
If r.Address = r.MergeArea(1).Address Then
Set r = r.MergeArea
この書き方は調べてみてください
No.1
- 回答日時:
>AddShape(msoShapeOval, r.Left, r.Top, r.Width, r.Height)
高さも横幅で指定する。
AddShape(msoShapeOval, r.Left, r.Top, r.Width, r.Width)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 指定の条件に応じたセルの場所に〇印(図形)を描く 2 2022/11/08 15:26
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Excel(エクセル) 判定結果に応じて〇印(図形)をつけるマクロ 4 2022/10/30 11:22
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
セルをクリック⇒そのセルに入力された文字を○で囲む
Excel(エクセル)
-
VBAで丸をつけたいです。
その他(プログラミング・Web制作)
-
エクセルで○をつけるマクロ設定
Excel(エクセル)
-
-
4
Excel(VBA)
Excel(エクセル)
-
5
エクセルマクロ セルをクリックするたびに記号を入力
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
VBA 別ブックから条件に合うも...
-
Excel VBA コンボボックスで空...
-
Excel 入力規則のリストのカー...
-
マウスを乗せたときにセルの色...
-
複数セルに〇印をつけるマクロ
-
GridViewの行選択イベントを発...
-
別ページからOnclickで背景色変更
-
SPREADで1つのセルに複数のチ...
-
エクセル: セルの枠を超えて表示
-
エクセルのセル内に全角数字を...
-
EXCELで特定のセルに表示...
-
エクセルのパーセンテージで、...
-
エクセルのセル内の余白の設定...
-
エクセル:マクロ「Application...
-
IF関数で空欄("")の時、Null...
-
エクセルで表示形式の時刻の「0...
-
エクセルのアポストロフィを一...
-
エクセルでの計算式で求められ...
-
【エクセル】関数で「A1が0でな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
VBA 別ブックから条件に合うも...
-
クリップボードの内容を変数に...
-
Excel VBA コンボボックスで空...
-
Excel_VBAについて質疑です。(...
-
Excel 入力規則のリストのカー...
-
マウスを乗せたときにセルの色...
-
【VB.NET】DataGridViewセルの...
-
GridViewの行選択イベントを発...
-
複数セルに〇印をつけるマクロ
-
VBA サンダーバードのメール自...
-
エクセルの取り消し線を検出す...
-
【VBA】セルが空白の場合に処理...
-
Excelマクロで空白セルの大小比...
-
SPREADで1つのセルに複数のチ...
-
■EXCEL(二つのセルの文字列を一...
-
DataGridViewでセルを結合したい
-
VBA 文字列を1文字ずつ調べて"...
-
マクロについて質問です 範囲内...
-
ドラッグアンドドロップ
おすすめ情報