'Code: Class: cls_combobox_FlangeSection
Option Explicit
Public m_ctlListControl As MSForms.Control
Public m_asListItems As Variant
Public WithEvents m_cmbFlangeSection As MSForms.ComboBox
Public Event FlangeCalc(m_Height As Double, m_Thickness As Double, m_Width As Double, _
m_crossArea As Double, m_massperMeter As Double)
Public Property Get ListIndex() As Long
ListIndex = m_cmbFlangeSection.ListIndex
End Property
Public Property Get Value() As String
Value = m_cmbFlangeSection.Value
End Property
Private Sub Class_Initialize()
m_asListItems = _
Array("FB 012.0 x 03.0", "FB 020.0 x 03.0", "FB 020.0 x 05.0", "FB 020.0 x 06.0", "FB 020.0 x 08.0", "FB 020.0 x 10.0", "FB 025.0 x 03.0", "FB 025.0 x 04.5", "FB 025.0 x 05.0", "FB 025.0 x 06.0", "FB 025.0 x 08.0", "FB 025.0 x 10.0", "FB 025.0 x 12.0", "FB 030.0 x 04.5", "FB 030.0 x 05.0", "FB 030.0 x 06.0", "FB 030.0 x 08.0", "FB 030.0 x 10.0", "FB 030.0 x 12.0", "FB 035.0 x 05.0", _
"FB 040.0 x 04.5", "FB 040.0 x 05.0", "FB 040.0 x 06.0", "FB 040.0 x 08.0", "FB 040.0 x 10.0", "FB 040.0 x 12.0", "FB 040.0 x 16.0", "FB 040.0 x 20.0", "FB 040.0 x 25.0", "FB 047.6 x 05.0", "FB 050.0 x 05.0", "FB 050.0 x 06.0", "FB 050.0 x 08.0", "FB 050.0 x 10.0", "FB 050.0 x 12.0", "FB 050.0 x 16.0", "FB 050.0 x 20.0", "FB 050.0 x 25.0", "FB 060.0 x 06.0", "FB 060.0 x 08.0", _
"FB 060.0 x 10.0", "FB 060.0 x 12.0", "FB 060.0 x 16.0", "FB 060.0 x 20.0", "FB 060.0 x 25.0", "FB 060.0 x 30.0", "FB 065.0 x 06.0", "FB 065.0 x 08.0", "FB 065.0 x 10.0", "FB 065.0 x 12.0", "FB 065.0 x 16.0", "FB 065.0 x 20.0", "FB 065.0 x 25.0", "FB 070.0 x 06.0", "FB 070.0 x 08.0", "FB 070.0 x 10.0", "FB 070.0 x 12.0", "FB 070.0 x 16.0", "FB 070.0 x 20.0", "FB 080.0 x 06.0", _
"FB 080.0 x 08.0", "FB 080.0 x 10.0", "FB 080.0 x 12.0", "FB 080.0 x 16.0", "FB 080.0 x 20.0", "FB 080.0 x 25.0", "FB 080.0 x 30.0", "FB 080.0 x 40.0", "FB 090.0 x 06.0", "FB 090.0 x 08.0", "FB 090.0 x 10.0", "FB 090.0 x 12.0", "FB 090.0 x 16.0", "FB 090.0 x 20.0", "FB 090.0 x 25.0", "FB 100.0 x 06.0", "FB 100.0 x 08.0", "FB 100.0 x 10.0", "FB 100.0 x 12.0", "FB 100.0 x 16.0", _
"FB 100.0 x 20.0", "FB 100.0 x 25.0", "FB 100.0 x 30.0", "FB 100.0 x 40.0", "FB 100.0 x 50.0", "FB 110.0 x 06.0", "FB 110.0 x 08.0", "FB 110.0 x 10.0", "FB 110.0 x 12.0", "FB 130.0 x 08.0", "FB 130.0 x 10.0", "FB 130.0 x 12.0", "FB 130.0 x 16.0", "FB 130.0 x 20.0", "FB 130.0 x 25.0", "FB 150.0 x 08.0", "FB 150.0 x 10.0", "FB 150.0 x 12.0", "FB 150.0 x 16.0", "FB 150.0 x 20.0", _
"FB 150.0 x 25.0", "FB 150.0 x 30.0", "FB 180.0 x 10.0", "FB 180.0 x 12.0", "FB 180.0 x 16.0", "FB 180.0 x 20.0", "FB 180.0 x 25.0", "FB 200.0 x 10.0", "FB 200.0 x 12.0", "FB 200.0 x 16.0", "FB 200.0 x 18.0", "FB 200.0 x 20.0", "FB 200.0 x 25.0", "FB 200.0 x 30.0", "FB 250.0 x 10.0", "FB 250.0 x 12.0", "FB 250.0 x 16.0", "FB 250.0 x 18.0", "FB 250.0 x 20.0", "FB 250.0 x 25.0", _
"FB 250.0 x 30.0", "FB 300.0 x 10.0", "FB 300.0 x 12.0", "FB 300.0 x 16.0", "FB 300.0 x 18.0", "FB 300.0 x 20.0", "FB 300.0 x 25.0", "FB 300.0 x 30.0", "FB 300.0 x 35.0", "FB 300.0 x 40.0", "FB 300.0 x 45.0", "FB 300.0 x 50.0", "FB 300.0 x 55.0", "FB 300.0 x 65.0", _
"eqL 025.0 x 025.0 x 02.5", "eqL 025.0 x 025.0 x 03.0", "eqL 025.0 x 025.0 x 04.0", "eqL 025.0 x 025.0 x 05.0", "eqL 030.0 x 030.0 x 03.0", "eqL 030.0 x 030.0 x 04.0", "eqL 030.0 x 030.0 x 05.0", "eqL 040.0 x 040.0 x 02.5", "eqL 040.0 x 040.0 x 03.0", "eqL 040.0 x 040.0 x 04.0", "eqL 040.0 x 040.0 x 05.0", "eqL 040.0 x 040.0 x 06.0", "eqL 045.0 x 045.0 x 03.0", "eqL 045.0 x 045.0 x 04.0", _
"eqL 045.0 x 045.0 x 05.0", "eqL 045.0 x 045.0 x 06.0", "eqL 050.0 x 050.0 x 03.0", "eqL 050.0 x 050.0 x 04.0", "eqL 050.0 x 050.0 x 05.0", "eqL 050.0 x 050.0 x 06.0", "eqL 050.0 x 050.0 x 08.0", "eqL 060.0 x 060.0 x 04.0", "eqL 060.0 x 060.0 x 05.0", "eqL 060.0 x 060.0 x 06.0", "eqL 060.0 x 060.0 x 08.0", "eqL 060.0 x 060.0 x 10.0", "eqL 070.0 x 070.0 x 06.0", "eqL 070.0 x 070.0 x 08.0", _
"eqL 070.0 x 070.0 x 10.0", "eqL 080.0 x 080.0 x 06.0", "eqL 080.0 x 080.0 x 08.0", "eqL 080.0 x 080.0 x 10.0", "eqL 080.0 x 080.0 x 12.0", "eqL 090.0 x 090.0 x 06.0", "eqL 090.0 x 090.0 x 08.0", "eqL 090.0 x 090.0 x 10.0", "eqL 090.0 x 090.0 x 12.0", "eqL 100.0 x 100.0 x 08.0", "eqL 100.0 x 100.0 x 10.0", "eqL 100.0 x 100.0 x 12.0", "eqL 100.0 x 100.0 x 15.0", "eqL 120.0 x 120.0 x 08.0", _
"eqL 120.0 x 120.0 x 10.0", "eqL 120.0 x 120.0 x 12.0", "eqL 120.0 x 120.0 x 15.0", "eqL 150.0 x 150.0 x 10.0", "eqL 150.0 x 150.0 x 12.0", "eqL 150.0 x 150.0 x 15.0", "eqL 150.0 x 150.0 x 18.0", "eqL 200.0 x 200.0 x 16.0", "eqL 200.0 x 200.0 x 18.0", "eqL 200.0 x 200.0 x 20.0", "eqL 200.0 x 200.0 x 24.0", _
"uneqL 065.0 x 050.0 x 06.0", "uneqL 065.0 x 050.0 x 08.0", "uneqL 075.0 x 050.0 x 06.0", "uneqL 075.0 x 050.0 x 08.0", "uneqL 080.0 x 060.0 x 06.0", "uneqL 080.0 x 060.0 x 08.0", "uneqL 090.0 x 065.0 x 06.0", "uneqL 090.0 x 065.0 x 08.0", "uneqL 090.0 x 065.0 x 10.0", "uneqL 095.0 x 065.0 x 06.0", "uneqL 095.0 x 065.0 x 08.0", "uneqL 095.0 x 065.0 x 10.0", _
"uneqL 100.0 x 065.0 x 08.0", "uneqL 100.0 x 065.0 x 10.0", "uneqL 100.0 x 075.0 x 06.0", "uneqL 100.0 x 075.0 x 08.0", "uneqL 100.0 x 075.0 x 10.0", "uneqL 100.0 x 075.0 x 12.0", "uneqL 125.0 x 075.0 x 08.0", "uneqL 125.0 x 075.0 x 10.0", "uneqL 125.0 x 075.0 x 12.0", "uneqL 150.0 x 075.0 x 10.0", "uneqL 150.0 x 075.0 x 12.0", "uneqL 150.0 x 075.0 x 15.0", _
"uneqL 150.0 x 090.0 x 10.0", "uneqL 150.0 x 090.0 x 12.0", "uneqL 150.0 x 090.0 x 15.0")
End Sub
Private Sub Class_Terminate()
Set m_ctlListControl = Nothing
End Sub
Public Property Get ListControl() As MSForms.Control
Set ListControl = m_ctlListControl
End Property
Public Property Set ListControl(ctlListControl As MSForms.Control)
Select Case TypeName(ctlListControl)
Case "ListBox", "ComboBox"
Set m_ctlListControl = ctlListControl
m_ctlListControl.List = m_asListItems
Case Else
' up to you - maybe raise an error?
End Select
End Property
Private Sub m_cmbFlangeSection_Change()
Dim m_Height As Double
Dim m_Thickness As Double
Dim m_Width As Double
Dim m_crossArea As Double
Dim m_massperMeter As Double
Dim sizeArray() As String
If m_cmbFlangeSection.ListIndex >= 0 Then
sizeArray = Split(m_cmbFlangeSection.Value, " x ")
m_Height = sizeArray(1) / 1000
m_Width = Right(sizeArray(0), Len(sizeArray(0)) - InStr(sizeArray(0), " ")) / 1000
If UBound(sizeArray) < 2 Then
m_Thickness = 0
Else
m_Thickness = sizeArray(2) / 1000
End If
If m_Thickness = 0 Then
m_crossArea = m_Height * m_Width
Else
m_crossArea = m_Height * m_Width - ((m_Height - m_Thickness) * _
(m_Width - m_Thickness))
End If
m_massperMeter = m_crossArea * 7850
RaiseEvent FlangeCalc(m_Height, m_Thickness, m_Width, m_crossArea, m_massperMeter)
End If
End Sub
Bookmarks