Здравствуйте! Помогите, пожалуйста, решить следующую проблему. В некоторых ячейках листа есть повторяющийся текст трех видов: @0A@, @08@, @09@. Расположение этих ячеек и их количество заранее неизвестно, поэтому искать нужно по всему листу. Необходимо заменить этот текст на картинку статуса (например, красный = @0A@, желтый = @09@ и зеленый = @08@ кружки). Я совсем профан по части VBA кода, помогите написать соответствующий макрос.
Заранее спасибо! [moder]Читайте Правила форума. Прикладывайте свой пример.
Здравствуйте! Помогите, пожалуйста, решить следующую проблему. В некоторых ячейках листа есть повторяющийся текст трех видов: @0A@, @08@, @09@. Расположение этих ячеек и их количество заранее неизвестно, поэтому искать нужно по всему листу. Необходимо заменить этот текст на картинку статуса (например, красный = @0A@, желтый = @09@ и зеленый = @08@ кружки). Я совсем профан по части VBA кода, помогите написать соответствующий макрос.
Спасибо большое! Но, дело в том, что мне не подходит вариант с условным форматированием и раскраской ячеек, так как задание заключается, к сожалению, именно в замене текста на картинку, а не в раскраске ячеек. А как прописать в макросе путь до картинки, я не знаю.
Спасибо большое! Но, дело в том, что мне не подходит вариант с условным форматированием и раскраской ячеек, так как задание заключается, к сожалению, именно в замене текста на картинку, а не в раскраске ячеек. А как прописать в макросе путь до картинки, я не знаю.Anna@Anna
Sub Pr() Dim c As Range, lColor As Long For Each c In ActiveSheet.UsedRange Select Case c.Value Case "@0A@": lColor = vbRed Case "@09@": lColor = vbYellow Case "@08@": lColor = vbGreen Case Else: lColor = 0 End Select
If lColor Then '''c.Select SetShape c, lColor 'c.ClearContents ' ПОСЛЕ ПРОВЕРКИ АПОСТРОФ В НАЧАЛЕ СТРОКИ УДАЛИТЬ! End If Next c
End Sub
Sub SetShape(rng As Range, lColor As Long) Const D = 7
With ActiveSheet.Shapes.AddShape(msoShapeOval, _ (rng.Left + rng.Offset(, 1).Left - D) / 2, _ (rng.Top + rng.Offset(1).Top - D) / 2, _ D, D) ' _ rng.Height / 2, rng.Height / 2) .Line.Visible = msoFalse .Fill.ForeColor.RGB = lColor End With End Sub
[/vba]
[vba]
Код
Option Explicit
Sub Pr() Dim c As Range, lColor As Long For Each c In ActiveSheet.UsedRange Select Case c.Value Case "@0A@": lColor = vbRed Case "@09@": lColor = vbYellow Case "@08@": lColor = vbGreen Case Else: lColor = 0 End Select
If lColor Then '''c.Select SetShape c, lColor 'c.ClearContents ' ПОСЛЕ ПРОВЕРКИ АПОСТРОФ В НАЧАЛЕ СТРОКИ УДАЛИТЬ! End If Next c
End Sub
Sub SetShape(rng As Range, lColor As Long) Const D = 7
With ActiveSheet.Shapes.AddShape(msoShapeOval, _ (rng.Left + rng.Offset(, 1).Left - D) / 2, _ (rng.Top + rng.Offset(1).Top - D) / 2, _ D, D) ' _ rng.Height / 2, rng.Height / 2) .Line.Visible = msoFalse .Fill.ForeColor.RGB = lColor End With End Sub
По поводу картинок - там неважно, какие именно, просто светофор чтобы был. Саня, спасибо Вам огромное! Только вот нельзя ли текст из ячейки совсем убрать, а то там теперь - текст + картинка? Извините и еще раз спасибо)
По поводу картинок - там неважно, какие именно, просто светофор чтобы был. Саня, спасибо Вам огромное! Только вот нельзя ли текст из ячейки совсем убрать, а то там теперь - текст + картинка? Извините и еще раз спасибо)Anna@Anna