Доброе утро.У меня есть книга Microsoft Excel с поддержкой макросов с двумя листами: скажем, Sheet1 и Sheet2.В Sheet2 у меня есть поле со списком (контроль формы), который работает как сортировщик таблиц.Эта таблица также будет в Sheet2.В этом комбинированном коде используется следующий код:
Option Explicit
Sub DropDown4_Change()
Dim comboValue As String
Dim Key1ColumnIndex As Integer
Dim Key2ColumnIndex As Integer
'You can get the name by doing something like this in the immediate window: "? ActiveSheet.Shapes(1).OLEFormat.Object.Name"
comboValue = ActiveSheet.Shapes("Drop Down 4").ControlFormat.List(ActiveSheet.Shapes("Drop Down 4").ControlFormat.ListIndex)
Select Case comboValue
Case "By Keyphrase"
Key1ColumnIndex = 18
Key2ColumnIndex = 19
Case "By Region"
Key1ColumnIndex = 19
Key2ColumnIndex = 18
Case "Default"
Key1ColumnIndex = 1
Key2ColumnIndex = 1
End Select
Range("DataValues").sort Key1:=Range("DataValues").Cells(1, Key1ColumnIndex), _
Order1:=xlDescending, Header:=xlNo, DataOption1:=xlSortNormal, _
Key2:=Range("DataValues").Cells(1, Key2ColumnIndex), order2:=xlDescending
End Sub
Этот код работает как шарм в этой рабочей таблице.
Я использую Aspose Cells для Java, чтобы использовать эту книгу Excel в качестве шаблона для генерации новогокниги с несколькими таблицами данных, основанные на копиях Sheet2 (которые содержат мое комбо), но проблема в том, что когда я это делаю, комбо больше не работает, как в шаблоне.
В этой строке:
comboValue = ActiveSheet.Shapes("Drop Down 4").ControlFormat.List(ActiveSheet.Shapes("Drop Down 4").ControlFormat.ListIndex)
Я получаю эту ошибку:
Run-time error '438' Object doesn't support this property or method
Похоже, что ControlFormat не распознается как допустимый метод для комбо-формы.Это происходит независимо от того, используете ли вы имя комбо или индекс комбо (в данном случае всегда 6).«Drop Down 4» - правильное название.Я сообщал имя несколько раз на каждом листе, и указатель и имя были правильными.
Поэтому я надеюсь, что вы, ребята, сможете мне помочь.Спасибо за ваше терпение и извините, если мой английский недостаточно ясен.Не стесняйтесь задавать вопросы.