以下のコードでは以下のことができます。空白まで行をループします。
列Aでテキスト "EE Only"を検索し、行番号を記録します。
次に、記録された行番号の最初の四角形と、下の3行の残りの3つの四角形を追加します。
次に、塗りつぶしと黒い枠線で四角形をフォーマットします。
私は整数としてdim cを持ち、c = 2です。それをその列として使用します。これまでのところ、すべてがうまくいっています。私が抱えている問題は、行3に何かを持っているBの後のすべての列に対して、列番号が1つ増える必要があるということです。最初の図形セットは常にB列になります。その後C3に何かがある場合は、列番号を1つ増やしてC列にシェイプを追加する必要があります。D3に何かがある場合、cを1増やして形状を列Dに変換する。最初の行3が空白の場合、ループは停止します。
私はいくつかのことを試しましたが、私は完全に迷っています。もう1つの問題は、c = 2のコードを実行すると、シェイプが正しくフォーマットされていることです。これらの図形を残して手動でc = 3に変更してコードをもう一度実行すると、新しい図形セットに青い塗りが付きます。もう一度、私が見つけることができたすべてのものを試してみました。
Sub AddShapes()
Const TextToFind As String = "EE Only"
Dim ws As Worksheet
Dim RowNum As Range
Dim SSLeft As Double
Dim SSTop As Double
Dim SS As Range
Set ws = ActiveSheet
Dim c As Integer
c = 2
Set RowNum = ws.Range("A:A").Find(what:=TextToFind, lookat:=xlWhole)
Set SS = Cells(RowNum.Row, c)
SSLeft = Cells(RowNum.Row, c).Left + (Cells(RowNum.Row, c).Width)/4
'Add four rectangles
Dim y As Integer
For y = 0 To 3
SSTop = Cells(RowNum.Row + y, c).Top + ((Cells(RowNum.Row + y, c).Height)/2) - 5
Call ActiveSheet.Shapes.AddShape(msoShapeRectangle, SSLeft, SSTop, 10, 10)
Next
'Format them
ws.DrawingObjects.Select
Selection.ShapeRange.Fill.Visible = msoFalse
With Selection.ShapeRange.Line
.Visible = msoTrue
.Weight = 1
.ForeColor.RGB = RGB(0, 0, 0)
.Transparency = 0
End With
End Sub
ありがとうございました。私はちょうどこれを実行しようとしたと私はラインSSの=セル(行、c)の行にSub Rectanglesでエラーが表示されますcは空として表示されます。私はこれを修正する方法がわかりません。 – JordanCA57
いつものように、私はフォローアップの質問を投稿し、それを理解しました。 "col as Integer"を "c as Integer"に変更し、エラーなしで実行しました。 2番目の列は、正しい場所に図形を配置していません。 Where is "EE Only"が見つかりますが、もう少し時間をかけて試してみることにします。あなたの助けをもう一度ありがとう。 – JordanCA57
ああ、私の謝罪その変数の名前を変更するのを忘れてしまったので、うれしく思いました! – user45940