Hantera objektsamlingar i formulär


I detta tips visas hur vi kan loopa igenom en samling objekt för att ange status på dessa vid formuläröppning. Informationen hämtas från ett cellområde, vilket också tar emot statusinformationen vid formulärstängning.

En förutsättning är att vi använder oss av ett och samma namn på objekten samt har ett löpnummer för att särskilja dem åt. Enklast är att skapa ett objekt och kopiera det de antal gånger objektet ska förekomma i formuläret.

I exemplet hämtas även titeln för respektive checkbox från ett cellområde.

 

Option Explicit

Private wbBook As Workbook

Private wsSheet As Worksheet

Private rnValues As Range, rnCell As Range

Private i As Long

 

Private Sub cmbClose_Click()

   '© 2003 Alla rättigheter XL-Dennis  

   Set wbBook = ThisWorkbook

   Set wsSheet = wbBook.Worksheets("Blad1")

 

   With wsSheet

      Set rnValues = .Range("B4:B7")

   End With

 

   For i = 1 To 4

      With Me.Controls("CheckBox" & i)

         'Här skrivs respektive CheckBox status till berörda celler.

         rnValues(i, 1).Value = .Value

      End With

   Next i  

End Sub

 

Private Sub UserForm_Initialize()

   '© 2003 Alla rättigheter XL-Dennis  

   Set wbBook = ThisWorkbook

   Set wsSheet = wbBook.Worksheets("Blad1")

 

   With wsSheet

      Set rnValues = .Range("B4:B7")

   End With

 

   For i = 1 To 4

      With Me.Controls("CheckBox" & i)

         'Här sätt respektive CheckBox status (förbockad eller inte).

         .Value = rnValues(i, 1).Value

         'Här sätts respektive Checkbox namnvärde

         .Caption = rnValues(i, 1).Offset(0, -1).Value

      End With

   Next i

 End Sub