title: Avoiding .Activate with ActiveX Form Control
body: <p>I'm updating a macro that's used in lots of spreadsheets, and it's rather slow. While looking to speed it up, I noticed that at one point it goes through this loop:</p>
  
  <pre><code>For each wsLoop in ThisWorkbook.Worksheets
          wsLoop.Activate
          With ActiveSheet.Status_Text
              If bStatus = True Then
                  .ForeColor = &amp;HC000&amp;
                  .Caption = "ONLINE"
              Else
                  .ForeColor = &amp;HFF&amp;
                  .Caption = "OFFLINE"
              End If
          End With
  Next wsLoop
  </code></pre>
  
  <p>Where wsLoop is a worksheet, bStatus is a boolean and Status_Text is the name of an ActiveX label form control on each worksheet.
  I know using .Activate is bad practice and can slow things down, so I dropped the <code>wsLoop.Activate</code> and changed the next line to <code>With wsLoop.Status_Text</code>, but now I get a "Method or data member not found" error message.
  What's the proper way to do this? </p>