肝心の使い方を書いてませんでした。失礼しました。
進捗率の数字を記入すると自動で帯を引きます。
複数セルに一度に記入・編集しても構いません。ただし進捗率を生数字を記入している前提です。数式で実は進捗率を計算させていたときは,このマクロは使えません。
それとコードを一カ所(実際は2カ所)直します。そういえば前のご質問でテキストボックスを使っていたのは残します。前回の回答のコードを削除し,下記をコピー貼り付け直します。コードを記入するシートの呼び出し方を,回答した手順と違うやり方でやって間違えないよう注意して操作してください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h As Range
Dim ha As Range
Dim hs As Range
Dim s As object
Set hs = Application.Intersect(Target, Range("D4:D9"))
If hs Is Nothing Then Exit Sub
For Each ha In hs.Areas
For Each h In ha
For Each s In ActiveSheet.rectangles
If s.TopLeftCell.Row = h.Row Then s.Delete
Next s
If h > 0 Then
ActiveSheet.Shapes.AddShape _
Type:=msoShapeRectangle, _
Left:=h.Offset(0, 1 + h.Offset(0, -2) - Range("B2")).Left, _
Top:=h.Top + h.Height / 2, _
Width:=h.Offset(0, 1 + h.Offset(0, -2) - Range("B2")).Resize(1, 1 + h.Offset(0, -1) - h.Offset(0, -2)).Width * h / 100, _
Height:=h.Height / 2
End If
Next
Next
End Sub
#またご利用のソフトのバージョンをご質問に書いていません。マクロが動かない原因になるので,今度こそは忘れないようになさってください。
図形を消すのを線だけにすれば良いと思います。
「If .Shapes(I).Type = msoLine」で判断するように訂正して下さい(☆の行)。
For I = .Shapes.Count To 1 Step -1
☆ If .Shapes(I).Type = msoLine Then .Shapes(I).Delete
Next I
シート名タブを右クリックしてコードの表示を選び,現れたシートに下記のようにコピー貼り付ける。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h As Range
Dim ha As Range
Dim hs As Range
Dim s As Shape
Set hs = Application.Intersect(Target, Range("D4:D9"))
If hs Is Nothing Then Exit Sub
For Each ha In hs.Areas
For Each h In ha
For Each s In ActiveSheet.Shapes
If s.TopLeftCell.Row = h.Row Then s.Delete
Next s
If h > 0 Then
ActiveSheet.Shapes.AddShape _
Type:=msoShapeRectangle, _
Left:=h.Offset(0, 1 + h.Offset(0, -2) - Range("B2")).Left, _
Top:=h.Top + h.Height / 2, _
Width:=h.Offset(0, 1 + h.Offset(0, -2) - Range("B2")).Resize(1, 1 + h.Offset(0, -1) - h.Offset(0, -2)).Width * h / 100, _
Height:=h.Height / 2
End If
Next
Next
End Sub
#いま現在あなたが他に運用しているマクロ?と,色々調整がいるかもしれません。
そういった微調整を含めエラー対策等も特に施していませんので,もう少し実際の様子に合わせて調整してから使ってください。
再作成の依頼はご容赦方。
補足
ソフトのバージョン記入、失念しておりました(Excel 2007)。確かに動かないことがありますね。 試してみたのですが、同じ行にあるテキストボックスが消えてしまいます。 残すことができないでしょうか。