Frames in vba for excel

Элемент управления пользовательской формы Frame, применяемый в VBA Excel для создания группы элементов управления. Свойства рамки, пример использования.

UserForm.Frame – это элемент управления пользовательской формы, предназначенный для создания отдельных групп элементов управления, объединенных между собой визуально и функционально.

Элемент управления Frame

Элемент управления Frame в VBA Excel состоит из надписи и видимых или скрытых границ, определяющих его размер.

Визуально элементы управления на пользовательской форме можно разделить на группы с помощью отступов. Но рамка, если она не скрыта (Visible=True, BorderStyle=1), позволяет выделить каждую группу с помощью видимых границ.

Классический пример функционального объединения элементов управления – это группы переключателей (OptionButton). Наборы переключателей в каждой отдельной рамке (Frame) ведут себя как независимые от других переключателей функциональные группы. В каждой такой группе один переключатель всегда может быть включен (Value=True).

Элемент управления Frame может быть скрыт полностью (Visible=False) или частично (Visible=True, BorderStyle=0), когда скрыты только границы, а надпись остается видимой.

Свойства элемента Frame

Свойство Описание
BorderStyle Отображение границ элемента управления. 0 (fmBorderStyleNone) – границы скрыты, 1 (fmBorderStyleSingle) – границы отображены.
Caption Текст надписи элемента управления Frame.
ControlTipText Текст всплывающей подсказки при наведении курсора на рамку.
Enabled Возможность взаимодействия пользователя с элементом управления. True – взаимодействие включено, False – отключено (цвет Frame становится серым).
Font Шрифт, начертание и размер текста надписи.
Height Высота элемента управления.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления.
Picture Добавление изображения в поле рамки.
PictureAlignment Выравнивание изображения в поле элемента Frame.
PictureSizeMode Управление размером изображения в рамке.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления.
Visible Видимость элемента Frame. True – элемент отображается на пользовательской форме, False – скрыт.
Width Ширина элемента управления.

В таблице перечислены только основные, часто используемые свойства переключателя. Все доступные свойства отображены в окне Properties элемента управления Frame.

Примеры кода VBA с рамкой

Пример 1
Присвоение значений свойств элементу управления Frame в коде VBA Excel:

Private Sub UserForm_Initialize()

Me.Caption = «Пример 1»

  With Frame1

    .Caption = «Рамка 1»

    .BackColor = vbWhite

    .BorderStyle = 1

    .BorderColor = vbBlue

    .Font.Size = 12

    .Font.Italic = True

  End With

End Sub

Пример 2
Поведение двух групп переключателей в рамках на пользовательской форме:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

‘Присвоение исходных значений

‘свойствам элементов управления

‘перед отображением формы

Private Sub UserForm_Initialize()

Me.Caption = «Пример 2»

  With OptionButton1

    .Value = False

    .Caption = «Белый»

  End With

  With OptionButton2

    .Caption = «Зеленый»

    .Value = False

  End With

  With OptionButton3

    .Value = False

    .Caption = «Желтый»

  End With

  With OptionButton4

    .Caption = «Синий»

    .Value = False

  End With

  With Frame1

    .BorderStyle = 1

    .Caption = «Рамка 1»

  End With

  With Frame2

    .BorderStyle = 1

    .Caption = «Рамка 2»

  End With

End Sub

‘Смена цвета рамки при

‘клике на OptionButton1

Private Sub OptionButton1_Click()

  With Frame1

    .BackColor = vbWhite

    .Caption = «Рамка 1 белая»

  End With

End Sub

‘Смена цвета рамки при

‘клике на OptionButton2

Private Sub OptionButton2_Click()

  With Frame1

    .BackColor = vbGreen

    .Caption = «Рамка 1 зеленая»

  End With

End Sub

‘Смена цвета рамки при

‘клике на OptionButton3

Private Sub OptionButton3_Click()

  With Frame2

    .BackColor = vbYellow

    .Caption = «Рамка 2 желтая»

  End With

End Sub

‘Смена цвета рамки при

‘клике на OptionButton4

Private Sub OptionButton4_Click()

  With Frame2

    .BackColor = vbBlue

    .Caption = «Рамка 2 синяя»

  End With

End Sub

UserForm Controls — Frame, MultiPage and TabStrip

UserForm acts as a container in which you add multiple ActiveX controls, each of which has a specific use and associated properties. By itself, a UserForm will not be of much use unless ActiveX controls are added to it which are the actual user-interactive objects. Using ActiveX Controls on a Worksheet have been illustrated in detail, in the separate section of «Excel VBA: ActiveX Controls, Form Controls & AutoShapes on a Worksheet».

Also refer «2. UserForm and Controls — Properties» for properties common to the UserForm and most Controls

Note: In below given examples, vba codes are required to be entered in the Code Module of the UserForm, unless specified otherwise. 

—————————————-

Contents:

Frame Control

MultiPage Control

TabStrip Control

—————————————-

Frame Control

Frames are used to group controls that work together, are related to each other or have some commonality, in a UserForm. They also enhance the UserForm’s layout by bunching and organizing a related set of items. For example, in a BioData Form, the physical attributes like height, complexion, weight and hair color can be grouped in a particular Frame. Frames are particularly useful to group two or more OptionButtons. Primarily, Frames are used for 2 purposes: (i) to group related Controls in a UserForm to visually enhance and organize the Form’s layout; and (ii) to group OptionButtons to set their behaviour — they become mutually exclusive within a Frame and selecting one OptionButton will de-select all other OptionButtons within that Frame only. Using a Frame: First add the Frame in a UserForm and then add Controls to the Frame.

Example 1: Determine name and caption of all enabled OptionButtons in a Frame

Private Sub CommandButton1_Click()
‘determine name and caption of all enabled OptionButtons in a Frame

Dim ctrl As Control

For Each ctrl In Frame1.Controls

If TypeOf ctrl Is MSForms.OptionButton Then

If ctrl.Enabled = True Then

MsgBox ctrl.Name & » is an enabled OptionButton with caption » & ctrl.Caption

End If

End If

Next

End Sub

Example 2: Using Controls in a Frame with vba code (refer Image 25):

Private Sub UserForm_Initialize()
‘Set properties of Controls on initialization of UserForm.

Dim i As Integer
Dim myArray As Variant

‘enter value in «Name» TextBox of UserForm:
Me.txtName.Value = «Enter Your Name»

‘set Caption for the 2 Frames:
Me.fraPhyAttr.Caption = «Physical Attributes»
Me.fraEduExp.Caption = «Education & Experience»

‘populate ListBox of «Age» in the UserForm:
With Me.lstAge

For i = 1 To 100

.AddItem i & » yrs»

Next i

End With

‘populate ListBox of «Height» in the Frame «Physical Attributes»:

With Me.fraPhyAttr.ListBox1

For i = 140 To 200

.AddItem i & » cms»

Next i

End With

‘populate ListBox of «Weight» in the Frame «Physical Attributes»:
With Me.fraPhyAttr.ListBox2

For i = 80 To 250

.AddItem i & » lbs»

Next i

End With

‘populate ListBox «Field of Work» in the frame «Education & Experience»:
myArray = Array(«Finance», «Banking», «Medical», «Engineering», «Marketing», «Management», «Airlines», «Others»)
Me.fraEduExp.lstWorkField.List = myArray

‘populate ListBox of «Exp in Years» in the Frame «Education & Experience»:
With Me.fraEduExp.lstExpYrs

For i = 1 To 50

.AddItem i & » yrs»

Next i

End With

‘Group OptionButtons:
With Me.fraPhyAttr

optDark.GroupName = «Complexion»
optWheatish.GroupName = «Complexion»

optFair.GroupName = «Complexion»

optBlack.GroupName = «Hair»
optBlonde.GroupName = «Hair»
optBrunette.GroupName = «Hair»
optOther.GroupName = «Hair»

End With

Me.fraEduExp.optGraduate.GroupName = «EduLevel»
Me.fraEduExp.optPostGrad.GroupName = «EduLevel»
Me.fraEduExp.optProfessional.GroupName = «EduLevel»

‘enter value in «University/Institution» TextBox of the Frame «Education & Experience»:
Me.fraEduExp.txtUniversityInstitution.Value = «Enter Name»

End Sub

Private Sub txtName_Enter()

‘on selection, clears «Name» TextBox of UserForm
Me.txtName.Value = «»

End Sub

Private Sub txtUniversityInstitution_Enter()

‘on selection, clears «University/Institution» TextBox of the Frame «Education & Experience»
Me.fraEduExp.txtUniversityInstitution.Value = «»

End Sub

—————————————————————————————————————

MultiPage Control

A MultiPage control comprises of one or more Page objects, each containing its own set of controls. MultiPage is best used when you wish to handle a large amount of data that can be classified into multiple categories, wherein a separate Page can be created for each category. All controls that are added to a Page in a MultiPage control, are contained in and become a part of that Page which distinguishes the controls from those which are otherwise a part of the UserForm. A MultiPage control has several Pages, wherein selecting a Page makes it the current one (making it visible) while hiding the others. Each Page of a MultiPage control has its own tab order. The Pages are numbered from 0, and to select the first Page in a MultiPage control, use the code: MultiPage1.Value = 0. By default, a MultiPage control has 2 Pages. To Add Pages, right-click on the tab and select New Page ((select Delete Page to delete a Page). Note: Each Page of a MultiPage control will separately group two or more OptionButtons, irrespective of whether all OptionButtons (across all pages) have the same GroupName.

Dynamically Add/Remove a Page:

Using the Add Method: Syntax: Set m = MultiPage1.Pages.Add(pageName, pageCaption, pageIndex). pageIndex (optional) is an integer which specifies the position for the Page to be inserted, starting from 0 for the first position/Page. pageName sets the Name for the Page, pageCaption sets the Caption. Both are optional to specify.

Set m = MultiPage1.Pages.Add(«Page5», «NewPage», 1) — this code adds a new Page with name Page5 and Caption NewPage, as the second Page (viz. second position in the page order).

MultiPage1.Pages.Add «Page3»;    MultiPage1.Pages(2).Caption = «NewPage»   —   these 2 codes add a new (third) Page with name Page3 and set its Caption to NewPage.

MultiPage1.Pages.Add — this code simply adds a new Page.

To Remove a PageSyntax: MultiPage1.Pages.Remove (pageIndex). Example: MultiPage1.Pages.Remove (1) — this code removes the second Page.

Dynamically Access an individual Page:

To change or set the properties of a Page at Run-time, we need to identify that Page in the MultiPage control, which can be done in different ways. To access an individual Page in a MultiPage control, the following methods can be used (refer Images 26a & 26b and below Example of vba codes):

1. Numeric Index (using the Pages collection): Index 0 refers to the first page, Index 1 to the second page, and so on. Code to set Caption — MultiPage1.Pages(Index).Caption

2. Item Method (using the Pages collection): Item Index 0 refers to the first page, Item Index 1 to the second page , and so on. Code to set Caption — MultiPage1.Pages.Item(ItemIndex).Caption

3. Page Name: Code to set Caption — MultiPage1.Pages(«PageName»).Caption or MultiPage1.Pages.Item(«PageName»).Caption

4. Page Object: Code to set Caption — MultiPage1.PageName.Caption

5. SelectedItem Property: Code to set Caption — MultiPage1.SelectedItem.Caption

Example 3: Change properties of each Page of a MultiPage control, by using different methods of Page Selection. Refer Image 26a before the code is run (ie. MultiPage is per Design-time) and refer Image 26b which shows the changed Captions (Run-time) after running the below vba code.

Private Sub UserForm_Activate()
‘change/set properties of each Page of a MultiPage control, by using different methods of Page Selection.

‘using Numeric Index: sets Caption for the first Page:
MultiPage1.Pages(0).Caption = «Australia»

‘using Item Method: sets Caption for the second Page:
MultiPage1.Pages.Item(1).Caption = «Canada»

‘using Page Name: sets Caption for the third Page, whose name is Page3:
MultiPage1.Pages(«Page3»).Caption = «France»
‘alternate code: MultiPage1.Pages.Item(«Page3»).Caption = «France»

‘using Page Object: sets Caption for the fourth Page, whose name is Page4:
MultiPage1.Page4.Caption = «Germany»

‘using SelectedItem Property: sets Caption for the fifth Page, which is the selected/active page:

‘selects the fifth Page
MultiPage1.Value = 4
‘sets Caption for the selected page
MultiPage1.SelectedItem.Caption = «USA»

End Sub

Create a wizard using a Single UserForm and MultiPage control

In case you wish to accept data sequentially (ie. one step after another), then instead of using multiple UserForms it is better to use a MultiPage control to create multiple Pages in a Single UserForm. The next Page can be made accessible only after the previous Page has been filled and entered. We show how to create a wizard interface comprising of 4 Pages, as below.

Example 4: Refer Images 27a to 27d which show the 4 Pages in the MultiPage wizard. Below is the set of vba codes for these (to be entered in the Code Module of the UserForm):

Private Sub UserForm_Initialize()
‘set properties of each Page of the MultiPage control

Dim i As Integer

‘set Caption for each Page:
MultiPage1.Pages(0).Caption = «Name»
MultiPage1.Pages(1).Caption = «Gender & Age»
MultiPage1.Pages(2).Caption = «Personal»
MultiPage1.Pages(3).Caption = «Professional»

‘set Caption for Frames in fourth Page:
MultiPage1.Pages(3).Frame1.Caption = «Field of Work»
MultiPage1.Pages(3).Frame2.Caption = «Education Level»

‘populate ListBox «Age» in second Page:
With MultiPage1.Pages(1).lstAge

For i = 1 To 100

.AddItem i & » yrs»

Next i

End With

‘populate ComboBox «Residing Country» in third Page:
myArray = Array(«Argentina», «Australia», «Brazil», «China», «France», «Germany», «Greece», «HongKong», «India», «Italy», «Japan», «Russia», «Singapore», «Spain», «Switzerland», «UK», «USA»)
MultiPage1.Pages(2).cmbCountry.List = myArray

MultiPage1.Pages(0).Enabled = True
MultiPage1.Pages(1).Enabled = False
MultiPage1.Pages(2).Enabled = False
MultiPage1.Pages(3).Enabled = False
‘select first page:
MultiPage1.Value = 0

End Sub

Private Sub MultiPage1_Change()

‘set properties of Previous, Next, Cancel & Save Buttons. Note: these buttons are created outside the MultiPage control.
Select Case MultiPage1.Value

‘First Page:

Case 0

cmdPrevious.Enabled = False

cmdNext.Enabled = True

cmdSave.Enabled = False

‘Last Page:

Case MultiPage1.Pages.Count — 1

cmdPrevious.Enabled = True

cmdNext.Enabled = False

cmdSave.Enabled = True

‘Other Pages:

Case Else

cmdPrevious.Enabled = True

cmdNext.Enabled = True

cmdSave.Enabled = False

End Select

End Sub

Private Sub cmdSave_Click()
‘set properties for CommandButton Save. Note: this code does not provide how/where MultiPage data will be saved, but only the conditions under which data will get stored.

‘Last Page — atleast one OptionButton should be selected in each Frame:
With MultiPage1.Pages(MultiPage1.Pages.Count — 1)

If optAdmin.Value = False And optMktg.Value = False And optOps.Value = False And optOther1.Value = False Then

MsgBox «Please select Field of Work»

Exit Sub

ElseIf optGrad.Value = False And optPostGrad.Value = False And optProff.Value = False And optOther2.Value = False Then

MsgBox «Please select Education Level»

Exit Sub

End If

End With

End Sub

Private Sub cmdPrevious_Click()
‘set properties for CommandButton Previous

Select Case MultiPage1.Value

Case 1

MultiPage1.Pages(1).Enabled = False

MultiPage1.Pages(0).Enabled = True

MultiPage1.Value = 0

Case 2

MultiPage1.Pages(2).Enabled = False

MultiPage1.Pages(1).Enabled = True

MultiPage1.Value = 1

Case 3

MultiPage1.Pages(3).Enabled = False

MultiPage1.Pages(2).Enabled = True

MultiPage1.Value = 2

End Select

End Sub

Private Sub cmdNext_Click()
‘set properties for CommandButton Next

Select Case MultiPage1.Value

‘Name is required to be entered to proceed to next Page:
Case 0

If txtName.Value = «» Then

MsgBox «Please Enter Name»

Exit Sub

Else

MultiPage1.Pages(0).Enabled = False
MultiPage1.Pages(1).Enabled = True
MultiPage1.Value = 1

End If

‘Gender & Age are required to be selected to proceed to next Page:
Case 1

If optMale.Value = False And optFemale.Value = False Then

MsgBox «Please Select Gender»

Exit Sub

ElseIf lstAge.ListIndex = -1 Then

MsgBox «Please Select Age»

Else

MultiPage1.Pages(1).Enabled = False
MultiPage1.Pages(2).Enabled = True
MultiPage1.Value = 2

End If

‘Marital Status & Residing Country are required to be selected to proceed to next Page:
Case 2

If optMarried.Value = False And optSingle.Value = False Then

MsgBox «Please Select Marital Status»

Exit Sub

ElseIf cmbCountry.Value = «» Then

MsgBox «Please Select or Enter Country»

Else

MultiPage1.Pages(2).Enabled = False
MultiPage1.Pages(3).Enabled = True
MultiPage1.Value = 3

End If

End Select

End Sub

Private Sub cmdClose_Click()
‘set properties for CommandButton Close

Unload Me

End Sub 

————————————————————————————————————— 

TabStrip Control

A TabStrip control is used to view different contents in each Tab, for the same set of controls. A TabStrip is a collection of Tabs wherein each Tab contains a set of controls. By default, a TabStrip control has 2 Tabs. To Add Tabs, right-click on the Tab and select New Page (select Delete Page to delete a Tab).

Dynamically Add/Remove a Tab:

Using the Add Method: Syntax: Set t = TabStrip1.Tabs.Add(tabName, tabCaption, tabIndex). tabIndex (optional) is an integer which specifies the position for the Tab to be inserted, starting from 0 for the first position/Tab. tabName sets the Name for the Tab, tabCaption sets the Caption. Both are optional to specify.

Set t = TabStrip1.Tabs.Add(«Tab4», «NewTab», 1) — this code adds a new Tab with name Tab4 and Caption NewTab, as the second Tab (viz. second position in the tab order).

TabStrip1.Tabs.Add «Tab3»;    TabStrip1.Tabs(2).Caption = «Div 3»   —   the 2 codes add a new (third) Tab named Tab3 and set its Caption to Div 3.

To Remove a TabSyntax: TabStrip1.Tabs.Remove (tabCaption). Example: TabStrip1.Tabs.Remove («Div 3») — this code removes Tab with Caption Div 3.

Difference between a MultiPage control and TabStrip control:

A MultiPage control is a container for controls, similar to a Frame. Each Page has a separate set of controls and selecting a Page (ie. making it visible) hides the other Pages of the MultiPage.

A TabStrip contains a consistent set of controls across all Tabs (within the TabStrip). The content of the controls changes when a different Tab is selected but the visibility or layout of the controls remain same.

Selecting a Tab:

To change or set the properties of a Tab at Run-time, we need to identify that Tab in the TabStrip control, which can be done in different ways. SelectedItem property of the TabStrip control indicates which Tab is selected. To select a Tab, set the Value property of the TabStrip control. Tab values start from 0, and the value of first Tab in a TabStrip control will be 0, value of second Tab will be 1, and so on. To access an individual Tab in a TabStrip control, the following methods can be used (refer below Example of vba codes):

1. Numeric Index (using the Tabs collection): Index 0 refers to the first page, Index 1 to the second page , and so on. Code to set Caption — TabStrip1.Tabs(Index).Caption

2. Item Method (using the Tabs collection): Item Index 0 refers to the first page, Item Index 1 to the second page , and so on. Code to set Caption — TabStrip1.Tabs.Item(ItemIndex).Caption

3. Tab Name: Code to set Caption — TabStrip1.Tabs(«TabName»).Caption or TabStrip1.Tabs.Item(«TabName»).Caption

4. Tab Object: Code to set Caption — TabStrip1.TabName.Caption

5. SelectedItem Property: Code to set Caption — TabStrip1.SelectedItem.Caption

Example 5: Change/set properties of each Tab of a TabStrip control, by using different methods of Tab Selection.

Private Sub UserForm_Initialize()
‘change/set properties of each Tab of a TabStrip control, by using different methods of Tab Selection.

‘using Numeric Index: sets Caption for the first Tab:
TabStrip1.Tabs(0).Caption = «Australia»

‘using Item Method: sets Caption for the second Tab:
TabStrip1.Tabs.Item(1).Caption = «Canada»

‘using Tab Name: sets Caption for the third Tab, whose name is Tab3:
TabStrip1.Tabs(«Tab3»).Caption = «France»
‘alternate code: TabStrip1.Tabs.Item(«Tab3»).Caption = «France»

‘using Tab Object: sets Caption for the fourth Tab, whose name is Tab4:
TabStrip1.Tab4.Caption = «Germany»

‘using SelectedItem Property: sets Caption for the fifth Tab, which is the selected/active Tab:

‘selects the fifth Tab
TabStrip1.Value = 4
‘sets Caption for the selected Tab
TabStrip1.SelectedItem.Caption = «USA»

End Sub

Private Sub CommandButton1_Click()
‘check Name and Caption of all Tabs in a TabStrip control.

Dim i As Integer

For i = 0 To TabStrip1.Tabs.Count — 1

MsgBox TabStrip1.Tabs(i).Name & » has a caption of » & TabStrip1.Tabs(i).Caption

Next i

End Sub

Example 6: How to work with a TabStrip control and Tabs — using a TabStrip and its Tabs to Load data from worksheet and to update worksheet range from Tab data. Refer Images 28a to 28c, and below vba codes:

Private Sub UserForm_Initialize()
‘Set properties of Controls on initialization of UserForm.

‘set Captions for each Tab:
With TabStrip1

.Tabs(0).Caption = «Div 1»
.Tabs(1).Caption = «Div 2»

‘add new Tab named «Tab3» and set its Caption:
.Tabs.Add «Tab3»
.Tabs(2).Caption = «Div 3»

End With

‘populate TextBoxes «Sales Target», «Actual Sales» & «Achieved (%)» for Division 1 from worksheet:
txtSalesTarget.Value = Sheet5.Range(«B2»).Value
txtActualSales.Value = Sheet5.Range(«B3»).Value
txtAchieved.Value = Round(Sheet5.Range(«B4″).Value * 100, 2) & » %»

‘set first Tab as the selected Tab:
TabStrip1.Value = 0

‘set properties of Label (viz. Caption, BackColor, Font & TextAlign) which appears on selection of the first Tab:
lblDivision.Caption = «Div 1: Sales Performance»
Me.lblDivision.BackColor = RGB(255, 0, 0)
Me.lblDivision.Font.Bold = True
Me.lblDivision.TextAlign = fmTextAlignCenter

‘user not allowed to enter in TextBox of «Acheived (%)»
txtAchieved.Enabled = False

End Sub

Private Sub TabStrip1_Change()
‘when a new Tab is selected, Label properties are set and TextBoxes are populated from worksheet:

Dim n As Integer

n = TabStrip1.SelectedItem.Index

Select Case n

Case 0

‘on selection of first Tab, Caption of Label is set and its BackColor changes to Red:

lblDivision.Caption = «Div 1: Sales Performance»

Me.lblDivision.BackColor = RGB(255, 0, 0)

‘TextBoxes «Sales Target» & «Actual Sales» for Division 1 get populated from worksheet:

txtSalesTarget = Sheet5.Range(«B2»).Value

txtActualSales = Sheet5.Range(«B3»).Value

txtAchieved = Round(Sheet5.Range(«B4″).Value * 100, 2) & » %»

Case 1

‘on selection of second Tab, Caption of Label is set and its BackColor changes to Green:

lblDivision.Caption = «Div 2: Sales Performance»

Me.lblDivision.BackColor = RGB(0, 255, 0)

‘TextBoxes «Sales Target» & «Actual Sales» for Division 2 get populated from worksheet:

txtSalesTarget = Sheet5.Range(«C2»).Value

txtActualSales = Sheet5.Range(«C3»).Value

txtAchieved = Round(Sheet5.Range(«C4″).Value * 100, 2) & » %»

Case 2

‘on selection of third Tab, Caption of Label is set and its BackColor changes to Yellow:

lblDivision.Caption = «Div 3: Sales Performance»

Me.lblDivision.BackColor = RGB(255, 255, 0)

‘TextBoxes «Sales Target» & «Actual Sales» for Division 3 get populated from worksheet:

txtSalesTarget = Sheet5.Range(«D2»).Value

txtActualSales = Sheet5.Range(«D3»).Value

txtAchieved = Round(Sheet5.Range(«D4″).Value * 100, 2) & » %»

End Select

End Sub

Private Sub cmdClose_Click()
‘clicking on «Close» button, unloads the UserForm

Unload Me

End Sub

Private Sub cmdClick_Click()
‘Clicking the «Save» button will update worksheet with the values of each Tab.
‘Note that worksheet Range(«B4:D4») has a Percentage format of 2 decimals. Range(«B4») has formula: =B3/B2; Range(«C4») has formula: =C3/C2; and Range(«D4») has formula: =D3/D2.

Dim n As Integer

n = TabStrip1.SelectedItem.Index

Select Case n

‘update worksheet range per updated values in Text Boxes, for Division 1:

Case 0

If IsNumeric(txtSalesTarget.Value) And txtSalesTarget.Value > 0 And IsNumeric(txtActualSales.Value) Then

Sheet5.Range(«B2»).Value = txtSalesTarget.Value

Sheet5.Range(«B3»).Value = txtActualSales.Value

txtAchieved.Value = Round((txtActualSales.Value / txtSalesTarget.Value) * 100, 2) & » %»

Else

txtAchieved.Value = «»

End If

‘update worksheet range per updated values in Text Boxes, for Division 2:
Case 1

If IsNumeric(txtSalesTarget.Value) And txtSalesTarget.Value > 0 And IsNumeric(txtActualSales.Value) Then

Sheet5.Range(«C2»).Value = txtSalesTarget.Value

Sheet5.Range(«C3»).Value = txtActualSales.Value

txtAchieved.Value = Round((txtActualSales.Value / txtSalesTarget.Value) * 100, 2) & » %»

Else

txtAchieved.Value = «»

End If

‘update worksheet range per updated values in Text Boxes, for Division 3:
Case 2

If IsNumeric(txtSalesTarget.Value) And txtSalesTarget.Value > 0 And IsNumeric(txtActualSales.Value) Then

Sheet5.Range(«D2»).Value = txtSalesTarget.Value

Sheet5.Range(«D3»).Value = txtActualSales.Value

txtAchieved.Value = Round((txtActualSales.Value / txtSalesTarget.Value) * 100, 2) & » %»

Else

txtAchieved.Value = «»

End If

 End Select

End Sub

Элемент управления Frame

июля 20, 2015 admin

Frame — это просто рамка, которая выделяет прямоугольную область на форме и позволяет организовать элементы управления

рис . 1.1 Элемент управления Frame на панели ToolBox

рис. 1.2 Элемент управления Frame на форме

Помещенные внутрь рамки переключатели считаются взаимоисключающими, остальные элементы управления ведут себя точно так же, хотя иногда бывает полезно с точки зрения наглядности свести вместе под одной рамкой, к примеру, набор флажков. При желании рамку можно сделать невидимой, установив для свойства BorderStyle значение 1 и убрав значение свойства Caption.

рис. 1.3 Пример элемента управления Frame на форме

Добавление объектов класса Frame полезно в том случае, если нужно создать группу заданных объектов (например, флажков или переключателей) или просто, сделать визуальное оформление. Единственные свойство класса Frame, которое мы будем использовать:

BorderStyle – отвечает за отображение рамки, 0 – рамка не будет отображаться (будет видна простая вмятина), 1 – будет отображаться рамка цвета, заданного в свойстве BorderColor.

Свойство Caprion носит чисто информативный характер.

Рассмотрим пример: На поверхности UserForm мы разместим два блока, один – набор переключателей OptionButton, а второй – набор флажков CheckBox. Рядом будет находиться текстовое поле TextBox и список ListBox и одна кнопка. Когда мы будет выбирать значения в блоке с переключателями, в текстовом поле будет отображаться информация о выбранном элементе. При нажатии на кнопку, будет происходить добавление в список тех значений, которые отмечены галочками во втором блоке.

В редакторе кода для формы нужно разместить следующий код:

Private Sub OptionButton1_Change()

Dim Data As String

Data = “ ИТ-компания, владеющая одноимённой системой поиска в Сети и интернет-порталом. Поисковая система «Яндекс» является четвёртой среди поисковых систем мира по количеству обработанных поисковых запросов”

TextBox1.Text = Data

End Sub

Private Sub OptionButton2_Change()

Dim Data As String

Data = “Крупнейшая поисковая система интернета, принадлежащая корпорации Google Inc”

TextBox1.Text = Data

End Sub

Private Sub OptionButton3_Change()

Dim Data As String

Data = “Новости России и мира. Электронная почта. Поиск информации в интернете. Развлекательные и коммуникационные сервисы. Программы и приложения.”

TextBox1.Text = Data

End Sub

Private Sub UserForm_Initialize()

TextBox1.MultiLine = True

Frame2.BorderStyle = fmBorderStyleSingle

End Sub

Private Sub CommandButton1_Click()

Dim ctrl As Control

For Each ctrl In Frame2.Controls

If ctrl.Value = True Then

ListBox1.AddItem ctrl.Caption

End If

Next

End Sub

Процедуры от OptionButton1_Change до OptionButton4_Change отвечают за обработку события Change для каждого объекта OptionButton, расположенного на поверхности Frame. Переменная Data содержит данные типа String, в ней хранится информация, которую нужно вывести в текстовом поле.

CommandButton1_Click – тут происходит обработка клика по кнопке, в цикле происходит перебор коллекции всех элементов, что лежат на второй рамке класса Frame vba языка. Если значение Value какого из элементов ровно true (поставлена галочка), то содержимое Caption для выбранного объекта будет добавляться в список ListBox.

UserForm_Initialize – тут происходит настройки базовых свойств: определяем для текстового поля то, что оно будет многострочным (свойству MultiLine присваиваем значение true). Для объекта Frame2 класса vba Frame мы определяем, что бы отображалась рамка (свойству BorderStyle присваиваем значение fmBorderStyleSingle).

Пример можно скачать здесь

The Frame control is also called as groupbox control.

As the name suggests, this control is used to hold a set of controls within its area.

This control is generally used with radio button or option button control.

So as to enable the user to choose more than one choice at a time.

The frame also has a number of properties, but are least bothered as it is mainly used as a container.

Some of the properties which are occasionally used are

1.Picture property

This is used to specify the background picture of the frame or container

2.PictureAlignment

This property is used to specify the position or alignment of the picture

3.PictureSizemode

This property is used to specify the size of the picture to be used in the control.

The following figure shows the use of frame control

excel vba frame control display

From the above screenshot, there are two frames namely «Frame1» and «Frame2».

Each frame has two optionbuttons and the user can select 2 options.

But without the frame control, the user can select one and only one choice alone.

You can find similar Excel Questions and Answer hereunder

1) How to control forms in Excel VBA

2) Here an explanation about checkbox and how to control checkboxes in Excel VBA

3) How can I display fractions as it is in a cell (instead of displaying as a decimal)?

4) How can I get users to select a file for processing using my macro?

5) Here an explanation about combo boxes and interfacing with your user in Excel VBA

6) How can I display list of NAMES in a worksheet?

7) Here an explanation about buttons in VBA

8) Here an explanation about label controls in the various forms and controls using VBA

9) How can I remove display of Gridlines in my worksheet using VBA?

10) Here an explanation about text box and how to control text boxes in Excel VBA

На чтение 5 мин Просмотров 152 Опубликовано 29.08.2013

В данной статье мы подведем небольшой итог по элементам управления языка VBA, а именно, рассмотрим компонент VBA Frame, который позволяет добавлять на поверхность формы рамку. Сам объект довольно простой, хотя у него и есть масса свойств и событий, в большинстве случаев они обрабатываться не будут.

Добавление объектов класса Frame полезно в том случае, если нужно создать группу заданных объектов (например, флажков или переключателей) или просто, сделать визуальное оформление. Помним, что для запуска редактора VBA служит комбинация клавиш Alt + F11, все элементы управления находятся в окне ToolBox, оно автоматически доступно при роботе с объектом UserForm. Если окно ToolBox отсутствует, то его можно вызвать из меню View.

Единственные свойство класса Frame, которое мы будем использовать:

BorderStyle – отвечает за отображение рамки, 0 – рамка не будет отображаться (будет видна простая вмятина), 1 – будет отображаться рамка цвета, заданного в свойстве BorderColor.

Caption – задает надпись, которая отображается вверху по контуру рамки, свойство носит чисто информативный характер.

Хорошо, давайте приступим к настройке самой формы с компонентами. На поверхности UserForm мы разместим два блока, один – набор переключателей OptionButton, а второй – набор флажков CheckBox. Рядом будет находиться текстовое поле TextBox и список ListBox и одна кнопка. Когда мы будет выбирать значения в блоке с переключателями, в текстовом поле будет отображаться информация о выбранном элементе. При нажатии на кнопку, будет происходить добавление в список тех значений, которые отмечены галочками во втором блоке.

В редакторе кода для формы нужно разместить следующий код:

Private Sub OptionButton1_Change()
    Dim Data As String
    Data = "Злобная поисковая система, которая любить портить настроение молодым блогерам. " & _
            "Знаменита своим фильтром АГС. В критические дни ведет себя как девушка."
    TextBox1.Text = Data
End Sub
 
Private Sub OptionButton2_Change()
    Dim Data As String
    Data = "Данную поисковую систему обожают любители халявы и молодые блогеры. " & _
            "Гугл всегда рад проиндексировать любой ГС и дать мнимую надежу заработать в интернете."
    TextBox1.Text = Data
End Sub
 
Private Sub OptionButton3_Change()
    Dim Data As String
    Data = "В свое время Рамблер учитывался как поисковая система. " & _
            "Теперь это никому не нужный ресурс."
    TextBox1.Text = Data
End Sub
 
Private Sub UserForm_Initialize()
    TextBox1.MultiLine = True
    Frame3.BorderStyle = fmBorderStyleSingle
End Sub
 
Private Sub CommandButton1_Click()
    Dim ctrl As Control
    For Each ctrl In Frame2.Controls
        If ctrl.Value = True Then
            ListBox1.AddItem ctrl.Caption
        End If
    Next
End Sub

Давайте проанализируем все по порядку.

Форма UserForm с компонентом VBA Frame

Процедуры от OptionButton1_Change до OptionButton4_Change отвечают за обработку события Change для каждого объекта OptionButton, расположенного на поверхности Frame. Переменная Data содержит данные типа String, в ней хранится информация, которую нужно вывести в текстовом поле.

CommandButton1_Click – тут происходит обработка клика по кнопке, в цикле происходит перебор коллекции всех элементов, что лежат на второй рамке класса Frame vba языка. Если значение Value какого из элементов ровно true (поставлена галочка), то содержимое Caption для выбранного объекта будет добавляться в список ListBox.

UserForm_Initialize – тут происходит настройки базовых свойств: определяем для текстового поля то, что оно будет многострочным (свойству MultiLine присваиваем значение true). Для объекта Frame3 класса vba Frame мы определяем, что бы отображалась рамка (свойству BorderStyle присваиваем значение fmBorderStyleSingle).

И так, в этой статье мы рассмотрели элемент управления Frame VBA языка, который позволяет добавлять рамку на поверхность формы.

Like this post? Please share to your friends:
  • Frames for using in word
  • Frames for text in word
  • Frames for pictures in word
  • Frame vba excel это
  • Frame sentence for word