You don't need the UnwindChartPrint and UnwindChartItem macros, this by itself should do it:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G7,F26")) Is Nothing Then    'you don't need this line but it saves on processing (paired with End If below comment too)
  With CommandButton1
    If ([G7] = "" Or [G7] = "Unprinted") And ([F26] = "Roll" Or [F26] = "Roll_Stock") Then
      .BackColor = vbRed
      .ForeColor = vbWhite
      .Font.Bold = True
    Else
      .BackColor = RGB(240, 240, 240)
      .ForeColor = vbBlack
      .Font.Bold = False
    End If
  End With
End If    'you don't need this line but it saves on processing (paired with If comment above too)
End Sub
It can be shortened a la snb, but I leave it as it is for readability.