Работа с динамической UserForm (VBA/Excel)
Формулировка задачи:
Всем доброго времени суток!
Собственно есть код:
Форма с ListView отображается отлично. Все заданные свойства и поля отрабатывают на "ура", но когда я пытаюсь заполнить ListView, мне выдается сообщение:
Как я понимаю,
Попробовал обойти данную ситуацию добавив следующий код:
Но он так же не отрабатывает, хотя никаких ошибок не выдает. В связи с этим появилось несколько вопросов:
1. Есть ли возможность заполнить содержимое ListView на динамически созданной форме?
2. Почему не отрабатывает Call LWDActivate, а в частности ilwData.BackColor = RGB (20, 20, 20)?
3. Где можно более подробно почитать о работе с динамически создаваемыми объектами?
__________________
С уважением, Lepaj
Собственно есть код:
Форма с ListView отображается отлично. Все заданные свойства и поля отрабатывают на "ура", но когда я пытаюсь заполнить ListView, мне выдается сообщение:
"Run-time error '394' Property is write-only"
.Как я понимаю,
frmData.Designer.Controls.Add("MSComCtlLib.ListViewCtrl")
(что-то вроде макета дизайнера), добавляет контрол на форму и позволяет изменять только часть свойств, но не дает вносить содержимое.frmData.Controls.Add("MSComCtlLib.ListViewCtrl")
выдает ошибку, как я понимаю, в виду того чтоfrmData
на момент обращения еще не сгенерированна и поэтому мы не можем добавить на нее контрол.Попробовал обойти данную ситуацию добавив следующий код:
Но он так же не отрабатывает, хотя никаких ошибок не выдает. В связи с этим появилось несколько вопросов:
1. Есть ли возможность заполнить содержимое ListView на динамически созданной форме?
2. Почему не отрабатывает Call LWDActivate, а в частности ilwData.BackColor = RGB (20, 20, 20)?
3. Где можно более подробно почитать о работе с динамически создаваемыми объектами?
__________________
С уважением, Lepaj
Решение задачи: «Работа с динамической UserForm (VBA/Excel)»
textual
Листинг программы
<font color="blue">Dim</font> X <font color="blue">As</font> <font color="blue">Integer</font> <font color="blue">With</font> frmData.CodeModule X = .CountOfLines .InsertLines X + <font color="darkblue"><b>1</b></font>, <font color="teal">"Private Sub UserForm_Activate()"</font> .InsertLines X + <font color="darkblue"><b>2</b></font>, <font color="teal">" Dim li As MSComctlLib.ListItem"</font> .InsertLines X + <font color="darkblue"><b>3</b></font>, <font color="teal">" Dim ilwData As MSComctlLib.ListView"</font> <font color="00AA00">' Судя по всему проблема была здесь, похоже было неправильное обращение к элементу</font> <font color="00AA00">' .InsertLines X + 7, <font color="teal">"Set ilwData = "</font> & frmData.Name & <font color="teal">"."</font> & lwData.Name</font> .InsertLines X + <font color="darkblue"><b>4</b></font>, <font color="teal">" Set ilwData = Me."</font> & lwData.<font color="blue">Name</font> <font color="00AA00">' правильное обращение к элементу</font> .InsertLines X + <font color="darkblue"><b>5</b></font>, <font color="teal">" Dim i As Integer"</font> .InsertLines X + <font color="darkblue"><b>6</b></font>, <font color="teal">" With ilwData"</font> .InsertLines X + <font color="darkblue"><b>7</b></font>, <font color="teal">" For i = 0 To 2"</font> .InsertLines X + <font color="darkblue"><b>8</b></font>, <font color="teal">" Set li = .ListItems.Add (, , pArrayData(i).year)"</font> .InsertLines X + <font color="darkblue"><b>9</b></font>, <font color="teal">" li.SubItems(1) = Format$(pArrayData(i).money,"</font> & Chr(<font color="darkblue"><b>34</b></font>) & <font color="teal">"Currency"</font> & Chr(<font color="darkblue"><b>34</b></font>) & <font color="teal">")"</font> .InsertLines X + <font color="darkblue"><b>10</b></font>, <font color="teal">" li.SubItems(2) = Format$(pArrayData(i).count,"</font> & Chr(<font color="darkblue"><b>34</b></font>) & <font color="teal">"# ##0 øò"</font> & Chr(<font color="darkblue"><b>34</b></font>) & <font color="teal">")"</font> .InsertLines X + <font color="darkblue"><b>11</b></font>, <font color="teal">" Next i"</font> .InsertLines X + <font color="darkblue"><b>12</b></font>, <font color="teal">" End With"</font> .InsertLines X + <font color="darkblue"><b>13</b></font>, <font color="teal">"End Sub"</font> <font color="blue">End</font> <font color="blue">With</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д