Скорее, новичок в VBA и возникли трудности с восстановлением выбранных элементов из списка ActiveX ListBox в методе Workbook_Open ().Я продолжаю получать сообщение об ошибке в строке lb.Selected (i) или lb.ListCount, как если бы эти методы отсутствовали в моем объекте списка (см. Исходный код ниже).
Может кто-нибудь сказать мне, что не так вмой код?Большое спасибо.
JM
Private Sub Workbook_Open()
Dim lb, CurShape As Shape
Dim lbName As Variant
Dim Name As String
Dim Width, height, Left, Top As Long
Dim Wsname, rg As String
Dim mg As Range
Dim i, m As Long
Dim WS As Worksheet
Dim SelectedP As Boolean
Set CurShape = ActiveSheet.Shapes("Rectangle 102")
CurShape.Left = 2
CurShape.Top = 1177
CurShape.Width = 661
CurShape.height = 692
Set CurShape = ActiveSheet.Shapes("Rectangle 154")
CurShape.Left = 2
CurShape.Top = 1871
CurShape.Width = 661
CurShape.height = 228
For Each lbName In Array(Array("Assembly", 132, 53, 58, 1200), Array("Propulsion", 144, 53, 262, 1192), _
Array("Avionics", 204, 88, 452, 1194), Array("Casting", 120, 28, 54, 1274), Array("Processes", 141, 78, 261, 1267), _
Array("Testing", 197, 135, 456, 1309), Array("Forging", 120, 28, 55, 1325), Array("MRO", 144, 90, 261, 1377), _
Array("Cabin", 191, 52, 456, 1459), Array("Insulation", 120, 20, 60, 1393), Array("Tubes", 144, 40, 261, 1496), _
Array("Consummables", 191, 30, 458, 1528), Array("Material", 120, 41, 56, 1441), Array("Metal", 144, 39, 261, 1551), _
Array("Composite", 190, 109, 461, 1568), Array("Machining", 132, 85, 63, 1513), Array("Engineering", 147, 66, 261, 1613), _
Array("Welding", 132, 30, 57, 1619), Array("Tools", 146, 40, 58, 1677), Array("Onboard", 294, 101, 264, 1710), _
Array("Additive", 148, 101, 59, 1742), Array("Certificates", 194, 195, 96, 1894), Array("Approvals", 205, 195, 450, 1891))
Name = CStr(lbName(0))
Width = CInt(lbName(1))
height = CInt(lbName(2))
Left = CInt(lbName(3))
Top = CInt(lbName(4))
Set CurShape = ActiveSheet.Shapes(Name)
CurShape.Width = Width
CurShape.height = height
CurShape.Left = Left
CurShape.Top = Top
Set lb = Me.Worksheets(1).Shapes(Name).OLEFormat.Object
rg = lb.ListFillRange
Wsname = Split(rg, "!")(0)
Set WS = ThisWorkbook.Worksheets(Wsname)
Set mg = WS.Range(rg).Offset(ColumnOffset:=1)
m = mg.Rows.Count ' lb.ListCount
For i = 0 To m - 1
SelectedP = mg.Cells(i + 1, 1).Value
lb.Selected(i) = SelectedP
Next i
Next lbName
End Sub