#vba #integer #ms-office #shapes
#vba #целое #ms-office #фигуры
Вопрос:
У меня есть столбец «I» в электронной таблице, который дает значение от 1 до 5. В зависимости от целого числа / ранжирования более 5 мне удается отображать звезды в ячейке рядом с целым числом:
Dim x As Integer, Cel As Range, Plg As Range
Dim y As Integer, etoile As Shape
Dim shp As Shape
With mysheet
Set Plg = .Range("I" amp; startLine amp; ":I" amp; nbLines)
For Each Cel In Plg
y = 5
For x = 1 To Cel.Value
If Cel > 0 Then
Set stars= .Shapes.AddShape(msoShape5pointStar, Cel.Left y, Cel.Top 5, 6, 6)
y = y 10
stars.Line.Visible = msoFalse
stars.Fill.ForeColor.SchemeColor = 13
End If
Next x
Next Cel
End With
Но поскольку я использую программу, которая обновляет мой столбец I и целое число, я ищу способ удалить звезды, которые я создал ранее, а затем применил новый рейтинг / количество звезд.
Я пробовал подобные вещи до моего кода:
For Each shp In mysheet.Shapes
If shp.Type = msoShapeTypeMixed Then shp.Delete
Next shp
Без особого успеха…
Любая помощь была бы оценена!
Ответ №1:
Попробуйте что-то подобное, пожалуйста:
Dim sh As Worksheet, st As Shape
Set sh = ActiveSheet
For Each st In sh.Shapes
If st.Type = 1 And left(st.Name, 7) = "5-Point" Then st.Delete
Next
Вы также можете присвоить имена звездам при создании.Что-то вроде
'your existing code
'
Set stars= .Shapes.AddShape(msoShape5pointStar, Cel.Left y, Cel.Top 5, 6, 6)
y = y 10
stars.Name = "MyStar" amp; "somethin else" '(maybe the Cel.Addres and use it in a similar way to delete only specific ones)
'your existing code
Затем удалите фигуры, содержащие первые 6 символов, таких как «MyStar», или что вам нравится…
Если вам нужно выборочно удалить их, вы также можете определить их TopLeftCell
адрес и удалить в соответствии с этим.
Комментарии:
1. Да, вы поняли, сэр! Спасибо, что первая сработала отлично
2. @Pierre_CM: Рад, что смог помочь! Но было бы неплохо также изучить остальные предложения. Просто для того, чтобы лучше понимать и изучать VBA … 🙂
3. На самом деле я отлаживал с первым и проверил все свойства объекта (имя адреса). Таким образом, это действительно помогло мне получить очки, которые я пропустил, и вы предложили оба решения!