title: VBA Change the Color of a Rounded Rectangle in Visio
body: <p>I am adding rounded rectangles to a page in Visio using the following code...</p>
  
  <pre><code>        Dim t As Visio.Master
          Set t = Application.Documents.Item("BASIC_U.VSS").Masters.ItemU("Rounded rectangle")
  
          Application.ActiveWindow.Page.Drop t, 0, 0
  
          ActiveWindow.DeselectAll
          ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemU("Rounded rectangle"), visSelect
          ActiveWindow.Selection.Group
  
          Dim vsoShps As Visio.Shapes
  
          Set vsoShps = pg.Shapes
          Dim totalShapes As Integer
          totalShapes = vsoShps.count
  
          Set vsoShape1 = vsoShps.Item(totalShapes)
  
          ' move the shapes to random positions
          Application.ActiveWindow.Selection.Move x + 1 / 2 * (lowRight_X_SysShapeCoord - upLeft_X_SysShapeCoord), y + 1 / 2 * (upLeft_Y_SysShapeCoord - lowRight_Y_SysShapeCoord)
  
          vsoShape1.Cells("Char.Size").Formula = getFontSize(1)
  
          vsoShape1.Cells("Width") = lowRight_X_SysShapeCoord - upLeft_X_SysShapeCoord
          vsoShape1.Cells("Height") = upLeft_Y_SysShapeCoord - lowRight_Y_SysShapeCoord
  
          vsoShape1.Text = xlWsh.Range("A" &amp; r)
  
  
          ' place text at top center of box
          vsoShape1.CellsU("TxtHeight").FormulaForceU = "Height / 2"
  
  
          Dim shp As Visio.Shape
          Set shp = ActiveWindow.Page.Shapes.ItemU("Rounded rectangle")
  
          ActiveWindow.DeselectAll
          ActiveWindow.Select shp, visSelect
  
          Dim shpGrp As Visio.Shape
          Set shpGrp = ActiveWindow.Selection.Group
  
          'Set fill on child shape
          shpGrp.Shapes(1).CellsU("Fillforegnd").FormulaU = "RGB(18, 247, 41)"
  </code></pre>
  
  <p>Note: there are 5 buttons placed prior to the rectangle</p>
  
  <p>I am able set the text and other text properties but I cannot figure out how to change the fill color of the rounded rectangle. I know how to change the fill color of a regular rectangle...</p>
  
  <pre><code>Set vsoShape1 = ActivePage.DrawRectangle(upLeft_X_SysShapeCoord, _
                                           upLeft_Y_SysShapeCoord, _
                                           lowRight_X_SysShapeCoord, _
                                           lowRight_Y_SysShapeCoord)
  
  ' change color
  vsoShape1.Cells("Fillforegnd").Formula = "RGB(18, 247, 41)"
  </code></pre>
  
  <p>But this will not work for the rounded rectangle. I have been searching for hours trying to find a solution but I cannot find the answer. Can someone help?</p>
  
  <hr>
  
  <p>Solution</p>
  
  <p>Grouping...</p>
  
  <pre><code>        Application.ActiveWindow.Page.Drop Application.Documents.Item("BASIC_U.VSS").Masters.ItemU("Rounded rectangle"), 0, 0
  
          Dim vsoShps As Visio.Shapes
  
          Set vsoShps = pg.Shapes
          Dim totalShapes As Integer
          totalShapes = vsoShps.count
  
          Set vsoShape1 = vsoShps.Item(totalShapes)  
  
          Dim shp As Visio.Shape
          Set shp = ActiveWindow.Page.Shapes.ItemU("Rounded rectangle")
  
          ActiveWindow.DeselectAll
          ActiveWindow.Select shp, visSelect
  
          Dim shpGrp As Visio.Shape
          Set shpGrp = ActiveWindow.Selection.Group
  
          'Set fill on child shape
          shpGrp.Shapes(1).CellsU("Fillforegnd").FormulaU = "RGB(18, 247, 41)"
  </code></pre>
  
  <p>Single Shape...</p>
  
  <pre><code>        Application.ActiveWindow.Page.Drop Application.Documents.Item("BASIC_U.VSS").Masters.ItemU("Rounded rectangle"), 0, 0
  
          Dim vsoShps As Visio.Shapes
  
          Set vsoShps = pg.Shapes
          Dim totalShapes As Integer
          totalShapes = vsoShps.count
  
          Set vsoShape1 = vsoShps.Item(totalShapes) 
  
          vsoShape1.CellsU("Fillforegnd").FormulaU = "RGB(18, 247, 41)"
  </code></pre>