Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

460

 

Часть IV. Пользовательские формы

Templtem = Tem pList(Item Num )

Tem pList(Item Num )

=

T e m p L is t(ItemNum - 1)

Tem pList(Item N um

-

1 ) = Templtem

L is t B o x l. L is t = Tem pList

'Изменение индекса списка

L is t B o x l. L is tln d e x

=

ItemNum -

1

 

End Sub

 

 

 

 

 

 

 

 

P riv a te

Sub M oveD ow nB utton _C lick()

 

Dim

Numltems

As

In te g e r,

i As

In te g e r, ItemNum

As In te g e r

Dim

Templtem

As

S tr in g ,

T e m p L is t()

 

I f L is t B o x l. L is tln d e x

=

L is t B o x l. L is tC o u n t - 1

Then E x it Sub

Numltems = L is t B o x l. L is tC o u n t

 

 

Dim

T e m p L is t()

 

 

 

 

 

 

ReDim T e m p L is t(0

To

Numltems -

1)

 

'Заполнение массива элементами списка

For i

=

0

То Numltems - 1

T e m p L is t(i) = L is t B o x l. L i s t (i )

N ext

i

 

 

1 Выделенный

элемент

ItemNum

=

L is t B o x l. L is tln d e x

'Обмен элементами

 

Templtem = T e m p L is t(ItemNum)

 

Tem pList(Item Num )

= T e m p L is t(ItemNum + 1)

 

Tem pList(Item N um

+

1) = Templtem

1

L is t B o x l. L is t =

Tem pList

Изменение индекса

списка

 

L is t B o x l. L is tln d e x

= ItemNum + 1

End

Sub

 

 

Работа с многоколоночными элементами управления ListBox

Как правило, элемент управления L is tB o x содержит один столбец, в котором ото­ бражается один список. Однако можно создать элемент управления L istB o x , который содержит несколько столбцов, а иногда — даже несколько столбцов с заголовками. На рис. 14.14 отображен элемент управления L is tB o x с несколькими столбцами, который получает данные из диапазона ячеек рабочего листа.

Компакт-диск

Рассмотренный в этом разделе пример находится на прилагаемом к книге компакт-диске в файле lis t b o x m u ltic o lu m n l .xlsm .

Для того чтобы создать элемент управления L is tB o x с несколькими столбцами,

в которые заносятся данные, хранимые в диапазоне ячеек листа, выполните следующие действия.

1. Удостоверьтесь, что свойству C olu m n C ou nt элемента

управления

L is tB o x

присвоено правильное значение, которое соответствует

количеству

столбцов

в элементе управления.

2.Укажите правильный исходный диапазон данных из нескольких столбцов, при­

своив соответствующее значение свойству R ow S ource элемента управления

L is tB o x .

462

 

 

 

 

Часть IV. Пользовательские формы

For i

= 1

То

12

 

 

 

 

D a ta ( i,

1)

=

F o rm a t(D a te S e ria l(2007,

i ,

1 ),

"mmmm")

N ext

i

 

 

 

 

 

 

For i

= 1

To

12

 

 

 

 

D a ta (i ,

2)

=

D a y (D a te S e ria l(2007, i

+ 1,

1)

- 1)

N ext

i

 

 

 

 

 

 

L is t B o x l. ColumnCount = 2

 

 

 

L is t B o x l. L is t

=

Data

 

 

 

End Sub

 

 

 

 

 

 

 

Компакт-диск

Пример из этого раздела находится на прилагаемом к книге компакт-диске в файле lis t b o x m u ltic o lu m n 2 .xlsm .

Примечание

Не существует способа определить заголовки столбцов в свойстве ColumnHeads, когда данные списка находятся в массиве VBA.

Использование элемента управления ListBox для выделения строк на листе

Пример, приведенный в этом разделе, поможет вам в решении различных практиче­ ских задач. Он позволяет отображать элемент управления L is tB o x , который состоит из

элементов заполненного диапазона на текущем листе (рис. 14.16). Пользователь может выбрать несколько опций списка в элементе управления L is tB o x . Щелкнув на кнопке Все, вы выберете все опции, а щелкнув на кнопке Сброс, отмените выбор всех опций. Щелчок на кнопке ОК приводит к выделению строк, которые соответствуют выделен­ ным опциям элемента управления L is tB o x . Конечно, можно выделить несколько не­

смежных диапазонов непосредственно на листе. Эта задача выполняется с помощью кла­ виши <Ctrl>. Но со временем становится понятно, что метод, предложенный в этом раз­ деле, намного удобнее.

Компакт-диск

 

Рассматриваемый в этом разделе пример находится на прилагаемом к кни­

 

ге компакт-диске в файле lis t b o x

s e le c t row s .xlsm .

 

Выбор

нескольких

опций возможен, поскольку свойству M u lt iS e le c t

элемента

управления L is t B o x

присвоено

значение 1

f m M u lt iS e le c t M u lt i.

Установка

свойства

L is t S t y l e

элемента

управления

L is t B o x равным 1 ( fm L is tS t y le -

O p tio n ) приводит к отображению флажков для каждого элемента.

Ниже приведена процедура объекта U serF orm , применяемая для обработки события I n i t i a l i z e . Эта процедура создает объект rn g , который состоит из используемого диапазона активного листа. Дополнительный код устанавливает свойства RowSource и C olu m n C ou nt элемента управления L is tB o x , а также изменяет значение свойства

C o lu m n W id th s , чтобы столбцы элемента управления L is t B o x по ширине соответст­

вовали столбцам активного рабочего листа.

P riv a te

Sub U s e r F o r m _ In itia liz e ()

Dim

C olC nt

As In te g e r

Dim

rng

As

Range

Dim

cw

As

S trin g