![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
一例です。
Sub Sample1()
Dim h As Range
On Error Resume Next
ActiveSheet.Ovals.Delete
For Each h In Range("C:C").SpecialCells(xlCellTypeConstants, xlNumbers)
With ActiveSheet.Shapes.AddShape(msoShapeOval, 120, h.Top, 35, 14)
.Fill.Visible = False
.Line.Weight = 0.1
.Line.ForeColor.SchemeColor = 64
End With
Next
End Sub
No.3
- 回答日時:
C列の数字を対象にする
C列の行高は等しいものとする。
Shapes.Addでやらずにコピー貼り付けを利用した。
セルの値が空白に変わるようなことがあれば、再実行が必要。イベント処理せず。
ーー
Sub test01()
ActiveSheet.DrawingObjects.Delete
d = Range("C65536").End(xlUp).Row
h = Range("c1").Height
ActiveSheet.Shapes.AddShape(msoShapeOval, 100, 0, 40, h).Select
x = Selection.Index
Selection.Copy
For i = 2 To d
Cells(i, "C").HorizontalAlignment = xlCenter
If Cells(i, "C") <> "" Then
ActiveSheet.Paste
Selection.ShapeRange.Left = Cells(i, "C").Left + 10
Selection.ShapeRange.Top = (i - 1) * h * 1#
Selection.ShapeRange.Fill.Visible = msoFalse
End If
Next i
ActiveSheet.Shapes(x).Delete
End Sub
---
長円の中に数字を納めるため、文字をセルの中央に配置している。しかしこれには異論もあろう。
空時桁に合わせて長円の大きさを変えるのはむつかしい。
ーー
>、○を背景なしで2~3個入れても、何も記録されませんでした。
長円を「塗りつぶしなし」にしていないから、長円がセル数字を隠しているのでは。
No.2
- 回答日時:
こういうマクロは、規定数(1000回から2000回)を越えると、オートシェイプが現れなくなることがあります。
その場合、シートを替えてリセットしないといけません。内部でカウントをしています。本来は、Visible =True/False で表示すれば、恒久的に使えます。*数字は、右端にあるものとしています。 フォントサイズは、11ですから、サイズによって、i / 1.35の定数を調整する必要があります。数字の数によって、丸の大きさが変わります。
'//
Sub EnterCercles()
Dim rng As Range
Dim c As Range, shp As Object, i As Long
Dim Lf#, tp#, w#, h#
Set rng = Range("C1", Cells(Rows.Count, 3).End(xlUp))
'最初にオートシェイプがある場合は削除します。
For Each shp In ActiveSheet.Shapes
If Not Intersect(Columns(3), shp.TopLeftCell) Is Nothing Then
shp.Delete
End If
Next shp
For Each c In rng.SpecialCells(xlCellTypeConstants, xlNumbers).Cells
With c
i = Len(c.Text)
If i > 1 Then i = i / 1.35 '注 フォントサイズ: 11
w = .Height * i: Lf = .Offset(, 1).Left - w: tp = .Top: h = .Height
End With
With ActiveSheet.Shapes.AddShape(msoShapeOval, Lf, tp, w, h)
.Line.ForeColor.SchemeColor = 10 '色は赤
.Fill.Transparency = 0#
.Fill.Solid
.Line.Visible = msoTrue
.Line.Weight = 0.75
.Line.DashStyle = msoLineSolid
.Line.Style = msoLineSingle
.Line.Transparency = 0#
.Fill.Visible = msoFalse
End With
Next c
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) 【マクロ】表への繰り返し転記について 1 2022/11/19 16:30
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) Excel_マクロ_複数のシートのVLOOKUPで表示された#N/A以外に色付けをしたいです 1 2023/02/16 22:37
- Excel(エクセル) エクセルの表について 3 2023/04/14 18:00
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一行おきにコピーするマクロが...
-
EXCELにて複数列を同条件(色)...
-
エクセルの関数について(日付で...
-
Excelの非表示列も含めてコピー
-
エクセルマクロ:空白行を除い...
-
シート保護の状態で行の追加を...
-
エクセルで行挿入した際、自動...
-
エクセルで空白以外のセルの値...
-
【初歩】エクセルでのマクロ(...
-
特定の桁数を抽出
-
エクセルのマクロを2つご指南く...
-
エクセルVBA 複数列をコピーす...
-
列を削除すると、セルに黄色の...
-
入力情報の無いふりがなの自動取得
-
最終行から上10行をコピーする...
-
notes ビューでの金額と単位表示
-
エクセルVBA 2つの別シートから...
-
Excel VBAで日にちを入力して線...
-
ExcelでA列の内容をB列の回数だ...
-
【マクロ】IF複数条件の上限に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELにて複数列を同条件(色)...
-
一行おきにコピーするマクロが...
-
行数が不規則な一週間ごとの合...
-
Excelの非表示列も含めてコピー
-
シート保護の状態で行の追加を...
-
エクセルで空白以外のセルの値...
-
エクセルの関数について(日付で...
-
エクセル マクロ 貼り付け先が...
-
エクセル VBA 指定の範囲内をコ...
-
エクセルで行挿入した際、自動...
-
エクセルで表示された値だけ行...
-
[Excel VBA]空白セル以外に連番...
-
エクセルVBA 複数列をコピーす...
-
マクロで値がある列までコピー
-
特定の桁数を抽出
-
エクセル マクロ 行や列を削除...
-
エクセルのマクロ、AVERAGEIFを...
-
マクロ初心者です、小数点6桁で...
-
Excel 条件に従いセル移動するには
-
VBAで同じブック内の別シー...
おすすめ情報