|
[1]
[2]
[2/1]
[2 t]
[3] [4]
- Как воспользоваться дополнительным элементом управления ?
09.03.2009
- Как найти и скачать некоторые элементы управления
от Microsoft ? 07.03.2010
- Как найти и скачать замены "стандартным" элементам
управления, а также некоторые дополнительные контролы ? 15.06.2016
- Как создать строку состояния на диалоговом окне UserForm ?
17.09.2007
- Как создать и использовать ProgressBar ? 01.09.2009
- Как создать свой собственный Прогресс Бар / ProgressBar [1] ?
01.09.2009
- Как использовать собственный ProgressBar [2] при
неизвестном времени выполнения программы ? 15.06.2016
- Как изменить количество делений ("кирпичиков") в
ProgressBar ? 01.09.2009
- Как изменить цвет
ProgressBar ? 01.09.2009
- Как отобразить стандартное диалоговое окно,
позволяющее выбрать нужный цвет ? 18.09.2007
- Как прокручивать список в ComboBox используя
колёсико мышки ? 27.07.2008
- Как сделать так, чтобы в ComboBox каждый элемент
списка был окрашен в свой цвет ? 10.10.2010
- Как изменить цвет заливки отдельных элементов списка
ListBox ? 17.10.2010
- Как создать ListBox, содержащий перечень всех листов
книги, причём с заливкой, идентичной цвету ярлычка ? 26.10.2014
- Как создать ListBox позволяющий перетаскивать
файлы/папки из проводника на ListBox и заполнять список именами этих файлов,
причём, исключая повторы ? 22.05.2011
- Как отсортировать столбец в ListView, с помощью
клика заголовка этого столбца ? 20.03.2012
- Как в ListView отсортировать столбец,
содержащий даты ? 20.03.2012
- Как в ListView быстро перейти в режим редактирования ?
27.12.2015
- Как в текстовом поле TextBox выделять только буквы
английского (латиница) или русского (кириллица) алфавита ? 08.01.2010
- Как прокручивать изображение в Image, если размер
рисунка больше контрола ? 21.08.2011
- Как показывать анимационные .gif ? 24.04.2014
- Как убрать отступ у картинки в WebBrowser ? 01.04.2017
- Как на UserForm отобразить папку и позволить
пользователю работать с папками и файлами ? 14.12.2014
- Как воспроизвести небольшой "анимационный ролик" ?
09.03.2009
- Как узнать выбрано ли значение в ListBox с многократным
выделением [без цикла] ? 02.01.2016
[1]
[2]
[2/1]
[2 t]
[3] [4]
Ответ :
1. Перейдите в редактор VBA (ALT+F11) и выберите любую форму.
Затем, выполните один из двух вариантов :
2. В меню Сервис/Tools выберите команду
Дополнительные элементы/Additional Controls
2. Подведите курсор мышки к панели инструментов Панель инструментов
и кликните правой кнопкой мышки. В появившемся контекстном меню выберите
команду Дополнительные элементы/Additional Controls
Важно : вне зависимости от выбора Панель инструментов
обязательно должна отображаться на экране, иначе Вы не сможете
воспользоваться вышеупомянутой командой. Поэтому, если панель не видна,
то в меню Вид/View выберите команду Панель элементов/Toolbox
или воспользуйтесь одноимённой кнопкой с панели Стандарт/Standard
3. После этого, в появившемся списке найдите и выберите нужный
элемент управления и подтвердите свой выбор нажатием кнопки OK.
4. Теперь, Вы можете кликнуть появившуюся кнопку и расположить
дополнительный элемент управления в любом месте нужного диалогового окна.
Ответ :
Если некоторые, наиболее часто используемые элементы управления,
отсутствуют на Вашем компьютере, то далее приведены две ссылки, с помощью
которых можно скачать файлы
mscomctl.ocx
и
mscomct2.ocx,
а затем распаковать их в папку Windows\System\ если речь идёт о
Win 98, Me или Windows\System32\ если установлена OC Win 2000, XP
P.S. Если со скачиваем возникли проблемы, то можно повторить
попытку, используя следующую
ссылку
Ответ :
Если Вас интересует альтернатива некоторым "стандартным" элементам
управления, а также, дополнительные контролы, в т.ч. FolderTreeview,
то их можно найти и скачать посетив страницу Common Controls Replacement Project
Ответ :
Для того, чтобы создать строку состояния можно воспользоваться любым
из трёх нижеперечисленных вариантов :
Вариант I.
Создайте элемент управления Надпись - Label1
и разместите его внизу нужного диалогового окна, затем, используя свойства
созданного элемента управления :
- удалите или измените текст, который отображается напротив поля
Caption
- напротив поля SpecialEffect выберите 2 - fmSpecialEffectSunken
- при необходимости, скорректируйте высоту, ширину и месторасположение
созданного элемента, используя свойства Height, Width, Left,
Top
Теперь, для того, чтобы в строке состояния отображался нужный текст,
достаточно воспользоваться свойством Caption :
Label1.Caption = "Microsoft Excel" 'Label1 = "Caption - default" |
Вариант II.
Добавьте элемент управления Microsoft StatusBar Control, version ...
используя этот [FAQ475]
Теперь, Вы можете кликнуть появившуюся кнопку StatusBar и расположить
строку состояния внизу нужного диалогового окна.
А после создания, Вы можете загрузить иконку, создать нужный текст,
изменить шрифт, размер, и т.п. Для этого, достаточно всего лишь кликнуть
мышкой небольшую серую кнопку в левой части поля (Специальный)/(Custom)
и воспользоваться закладками Panels
и Font, которые располагаются на диалоговом окне Свойства/Property Pages.
Совет : Обратите внимание на то, что элемент управления
StatusBar имеет и другие свойства, которые также могут быть Вам полезны.
Для того, что программно изменить текст в элементе управления
StatusBar, достаточно воспользоваться соответствующими свойствами :
| StatusBar1.Panels(1).Text = "Новый текст"
'если значение свойства Style = 0-sbrNormal (по умолчанию) |
| StatusBar1.SimpleText = "Новый текст"
'если значение свойства Style = 1-Simple |
Вариант III.
Создать строку состояния, а затем изменять текст этого окна, можно
использовав функции WinAPI [FAQ374]
Ответ :
Если во время выполнения макроса, Вам необходимо наглядно
показать процесс его выполнения, то для этого можно использовать
ProgressBar. Пример создания и применения собственного прогресс бара
можно найти в следующем [FAQ513]
Если же имитация, по каким-то причинам, нежелательна, то можно
воспользоваться "стандартным" элементом управления, который является
частью Microsoft Windows Common Controls.
Для этого, сначала добавьте элемент управления
Microsoft ProgressBar Control, version ...
воспользовавшись следующим
[FAQ475]
А затем, используйте нижеприведённый вариант, только не
забудьте закомментировать/удалить последнюю строку, если Вам
не нужно, чтобы после окончания выполнения макроса,
индикатор ProgressBar'а возвращался в исходное состояние.
ProgressBar1.Max = iMax
For iCount = 1 To iMax
ProgressBar1.Value = iCount
Next
ProgressBar1.Value = 0 |
Ответ :
Для того, чтобы создать свой собственный индикатор прогресса
(ProgressBar), проделайте следующее :
1. Создайте элемент управления Надпись - Back, затем,
используя свойства созданного элемента управления :
- удалите текст, который отображается напротив поля Caption
- установите нужную высоту, ширину и месторасположение созданного
элемента, используя свойства Height, Width, Left,
Top
- установите, используя поле BackColor, нужный фоновый цвет,
например, белый
- напротив поля SpecialEffect выберите 2 - fmSpecialEffectSunken
2. Затем, создайте второй элемент управления Надпись - Progress
- установите значения его свойств Top, Left,
Height равными соответствующим свойствам первого (Back) элемента, а
значение свойства Width установите = 0
- удалите текст, который отображается напротив поля Caption
- используя поле BackColor, выберите нужный цвет прогресс бара,
например, синий
- напротив поля SpecialEffect выберите 1 - fmSpecialEffectRaised
После чего, используйте следующую процедуру для отображения
процесса индикации, естественно, указав своё количество итераций (iMax)
Private Sub ProgressBar1(Optional iMax = 65536)
'Максимальное значение, т.е. iMax не должно быть менее 100
iKoeff = Back.Width / 100
iProcent = iMax / 100
For iСount = 1 To iMax
DoEvents
Progress.Width = (iСount \ iProcent) * iKoeff
Next
Progress.Width = 0
End Sub |
| Private Sub ProgressBar2(Optional iMax = 65536)
iProcent = Back.Width / iMax
For iСount = 1 To iMax
DoEvents
Progress.Width = iСount * iProcent
Next
Progress.Width = 0
End Sub |
Пример собственного прогресс бара, с так называемыми "кирпичиками",
можно скачать здесь
Ответ :
Если во время выполнения макроса, Вам необходимо использовать
ProgressBar, но количество итераций(повторений) неизвестно и вычислить
общее время выполнения программы, невозможно(или крайне затруднительно),
то можно создать имитацию "вечного" прогресс-бара, например, с помощью
анимационного .gif
Как, с помощью WebBrowser, отобразить на форме такие файлы,
довольно подробно рассказано в следующем [FAQ675]
Если же Вы захотите избавиться от полосы прокрутки, рамки
и т.д., то смотрите пример.
Обратите внимание, что там также наличествуют два анимационных .gif
файла, которые любезно предоставил их создатель Андрей Аганин
Ответ :
Для того, чтобы изменить количество "кирпичиков" у
элемента управления Microsoft ProgressBar Control нужно
уменьшить высоту контрола (свойство Height), если необходимо
увеличить их количество и, наоборот, увеличить высоту контрола, если
количество делений нужно уменьшить.
Ответ :
Сначала добавьте элемент управления Microsoft Common Dialog Control,
version ...
воспользовавшись следующим
[FAQ475]
А для отображения стандартного диалогового окна, которое позволит
Вам выбрать нужный цвет, используйте, например, следующий код и кнопку :
Private Sub CommandButton1_Click()
On Error GoTo ErrHandler
With Me.CommonDialog1
.CancelError = True
.ShowColor
iColor& = .Color
End With
'Теперь, Вы можете использовать полученный цвет,
'например, изменить цвет формы
Me.BackColor = iColor&: Exit Sub
ErrHandler:
If Err.Number = 32755 Then
MsgBox "Нужно было выбрать нужный цвет", vbCritical, ""
End If
End Sub |
Ответ :
К сожалению, при использовании колёсика(средней кнопки) мышки
прокрутки списка не происходит, однако, если оставить в покое стандартный
ComboBox и воспользоваться элементом управления ImageComboBox, то добиться
желаемого всё таки можно (перечень действий, позволяющих добавить этот
контрол - Microsoft ImageComboBox Control, version ... см.
выше, а небольшой пример заполнения ImageCombo
можно скачать здесь)
Ответ :
К сожалению, стандартный ComboBox не позволяет изменять цвет
текста у отдельного элемента списка, однако, если создать имитацию
разноцветного ComboBox, то добиться желаемого всё таки можно (пример
можно скачать здесь)
Ответ :
Увы, но стандартный ListBox не позволяет изменять цвет заливки
у отдельного элемента списка (строки), однако, если оставить его в покое
и воспользоваться элементом управления TreeView, то добиться желаемого
можно (перечень действий, позволяющих добавить этот контрол -
Microsoft TreeView Control, version ...
см. выше, а несколько примеров, демонстрирующих
заполнение TreeView,
можно скачать здесь)
Однако, чтобы создать иллюзию использования именно ListBox
необходимо ещё и изменить значения некоторых свойств TreeView :
Style = 0 - tvwTextOnly
FullRowSelect = True
Checkboxes = True (если необходимо наличие флажков)
Совет : Рекомендую обратить особое внимание на свойство
Sorted, которое позволит Вам получить отсортированный по возрастанию
список без дополнительных действий.
Ответ :
Актуально для MS Excel XP (и старше)
Для того, чтобы на пользовательской форме, создать ListBox,
который будет содержать имена всех листов(кроме модулей) текущей рабочей
книги, причём заливка каждого элемента списка должна быть идентичной
цвету ярлычка, нам придётся воспользоваться предыдущим советом,
см. выше, и создать имитацию ListBox.
А для того, чтобы заполнить наш элемент управления, нам
достаточно будет всего лишь воспользоваться следующим событием формы :
Private Sub UserForm_Initialize()
TreeView1.FullRowSelect = True
TreeView1.Style =tvwTextOnly
TreeView1.LabelEdit = tvwManual
Dim iList As Object, iColor As Variant
For Each iList In ThisWorkbook.Sheets
If TypeName(iList) <> "Module" Then
iColor = iList.Tab.Color
If TypeName(iColor) <> "Boolean" Then '= "Long"
TreeView1.Nodes.Add(Text:=iList.Name).BackColor = iColor
Else
TreeView1.Nodes.Add Text:=iList.Name
End If
End If
Next
End Sub |
Если же необходим список только рабочих листов и Вы уверены,
что ярлычки абсолютно всех рабочих листов раскрашены и Вы готовы
изменить значения трёх вышеприведённых свойств, вручную, то :
| Private Sub UserForm_Initialize()
Dim iList As Worksheet
For Each iList In ThisWorkbook.Worksheets
TreeView1.Nodes.Add(, , , iList.Name).BackColor = iList.Tab.Color
Next
End Sub |
Ответ :
Увы, но стандартный ListBox, после перетаскивания файлов/папок из
проводника на ListBox не позволяет получить имена этих файлов, однако, если
воспользоваться элементом управления ListView, то добиться желаемого
можно (перечень действий, позволяющих добавить этот контрол - Microsoft
ListView Control, version ... см. выше, а код,
позволяющий создать иллюзию использования именно ListBox, а также заполнение
ListView, смотрите ниже. Обратите внимание на то, что все действия
связанные с созданием имитации ListBox, можно проделать и вручную,
причём только один раз)
Private Sub UserForm_Initialize()
With ListView1
.View = lvwReport
'.CheckBoxes = True
.FullRowSelect = True
.LabelEdit = lvwManual
.HideColumnHeaders = True
.ColumnHeaders.Add.Width = 400
.OLEDropMode = ccOLEDropManual
End With
End Sub
Private Sub ListView1_OLEDragDrop( _
Data As MSComctlLib.DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single)
If Data.GetFormat(ccCFFiles) = True Then
For Each iFile In Data.Files
If ListView1.FindItem(iFile) Is Nothing _
Then ListView1.ListItems.Add Text:=iFile
Next
End If
End Sub |
Если же Вы не хотите, чтобы в списке появлялись папки, т.е. в списке
должны присутствовать только имена файлов, то добавьте небольшую проверку :
| Private Sub ListView1_OLEDragDrop( _
Data As MSComctlLib.DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single)
If Data.GetFormat(ccCFFiles) = True Then
For Each iFile In Data.Files
If (GetAttr(iFile) And vbDirectory) = 0 Then
If ListView1.FindItem(iFile) Is Nothing _
Then ListView1.ListItems.Add Text:=iFile
End If
Next
End If
End Sub
Private Sub ListView1_OLEDragDrop( _
Data As MSComctlLib.DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single)
If Data.GetFormat(ccCFFiles) = True Then
For Each iFile In Data.Files
If Not CBool(GetAttr(iFile) And vbDirectory) Then
If ListView1.FindItem(iFile) Is Nothing _
ListView1.ListItems.Add , , iFile
End If
Next
End If
End Sub |
Ответ :
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)
ListView1.SortKey = ColumnHeader.Index - 1
'ListView1.SortOrder = lvwAscending
ListView1.Sorted = True
End Sub |
Ответ :
Если Вы читаете этот FAQ , то, по всей видимости, уже
заметили, что ListView сортирует даты как текст и если Вас это
не устраивает, что вполне естественно, то :
создайте один дополнительный столбец
скройте его, установив ширину столбца = 0 (свойство Width)
заполните его, заменив Дату ,
например, на CDbl(Дата)
а затем, просто сортируйте этот дополнительный столбец
Ответ :
Если Вас не устраивает, что для перехода в режим редактирования
необходимо сначала выделить нужный элемент списка, а затем и ещё и
кликнуть мышкой, то можно ускорить сей процесс. Например, использовав
метод StartLabelEdit.
Private Sub ListView1_Click()
ListView1.StartLabelEdit
End Sub |
Ответ :
К сожалению, стандартный TextBox не позвляет форматировать часть
текста, однако, если воспользоваться элементом управления RichTextBox, то
добиться желаемого всё таки можно (перечень действий, позволяющих добавить
этот контрол - Microsoft Rich TextBox Control, version ... см.
выше), а пример, позволяющий непосредственно при
вводе выделять жирным кириллицу или латиницу, см. ниже (только
не забудьте выбрать одно из нижеопубликованных событий KeyPress,
а для кириллицы и правильно указать версию OC)
Private Sub RichTextBox1_KeyPress(KeyAscii As Integer) 'Russian
Select Case KeyAscii
'Case 168, 184, 192 To 255 'Win95/98/Me
Case 1025, 1040 To 1103, 1105 'WinNT/2000/XP/
Me.RichTextBox1.SelBold = True
Case Else
Me.RichTextBox1.SelBold = False
End Select
End Sub
Private Sub RichTextBox1_KeyPress(KeyAscii As Integer) 'English
Select Case KeyAscii
Case 65 To 90, 97 To 122
Me.RichTextBox1.SelBold = True
Case Else
Me.RichTextBox1.SelBold = False
End Select
End Sub
Private Sub RichTextBox1_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
Select Case KeyCode
Case vbKeyC And Shift = 2
KeyCode = 0
Case vbKeyV And Shift = 2
KeyCode = 0
End Select
End Sub |
Совет : Обратите внимание на то, что RichTextBox позволяет также
подчеркнуть, зачеркнуть текст, выделить его курсивом, поменять шрифт
и изменить его размер, кроме того Вы можете ещё и изменять цвет шрифта.
Ответ :
Если Вы используете элемент управления Image, то возможно
замечали, что данный контрол не имеет полос прокрутки, а значит,
если размер загружаемого рисунка будет больше, чем размер Image,
то Вы увидите только часть рисунка. В некоторых случаях достаточно
установить значение свойства PictureSizeMode как
3-fmPictureSizeModeZoom, но если изменение масштаба рисунка
недопустимо, и Вам просто необходима возможность "прокручивать"
изображение, то в таком случае, можно пойти на маленькую хитрость,
а именно :
1) Создайте элемент управления Рамка - Frame1
и разместите его там, где должен находиться Image, затем, используя
свойства созданного элемента управления :
- удалите текст, который отображается напротив поля Caption
- напротив поля SpecialEffect выберите
2 - fmSpecialEffectBump (необязательно)
- при необходимости, скорректируйте высоту, ширину и месторасположение
созданного элемента, используя свойства
Height, Width, Left, Top
2) Создайте элемент управления Рисунок - Image1, и разместите
его на Frame1, после чего, напротив :
- свойств Left и Top введите 0 (или -1)
- поля AutoSize выберите True
- поля PictureAlignment выберите 0-fmPictureAlignmentTopLeft
3) Создайте два элемента управления Полоса прокрутки - ScrollBar1
(вертикальный) и ScrollBar2 (горизонтальный) и разместите их, относительно
Frame1, справа и внизу.
Теперь, при загрузке изображения, используйте код
(событие UserForm_Initialize, разумеется, применяется только в
качестве примера, равно как и указанный файл)
Private Sub UserForm_Initialize()
Image1.Picture = LoadPicture("C:\Мои рисунки\Мой файл.jpg")
ScrollBar1.Max = Image1.Height - Frame1.Height
ScrollBar2.Max = Image1.Width - Frame1.Width
End Sub |
А для прокручивания изображения, используйте соответствующие события
полос прокрутки :
| Private Sub ScrollBar1_Change() 'Vertical
Image1.Top = -ScrollBar1.Value
End Sub
Private Sub ScrollBar2_Change() 'Horizontal
Image1.Left = -ScrollBar2.Value
End Sub |
Более полную версию данного совета, можно скачать
здесь.
Вариант II.
Добавьте элемент управления Обозреватель веб-страниц (Microsoft)
или Элемент средства просмотра Web Microsoft (Win95)
используя этот [FAQ475]
Затем, кликните появившуюся кнопку WebBrowser, и расположите
обозреватель в нужном месте диалогового окна.
Теперь, когда Вам понадобится загрузить нужный графический файл,
используйте метод Navigate, т.е. :
|
WebBrowser1.Navigate "C:\Мои рисунки\Мой файл.jpg"
'WebBrowser1.Navigate URL:="C:\Мои рисунки\Мой файл.jpg" |
К сожалению, данный способ зависит от настроек обозревателя, и если
у Вас не установлен "флажок" Отображать рисунки, то
изображения Вы не увидите (во всяком случае, так было при использовании
прежних версий IE)
Однако, у данного варианта есть и свои плюсы, например, WebBrowser
позволяет отображать большое количество графических файлов, в т.ч. и .png
которые, иногда, используются здесь как скриншоты.
Ответ :
Если Вы когда-нибудь загружали программно анимационный .gif ,
то, скорее всего, замечали, что стандартные контролы (в т.ч. и Image)
не показывают долгожданной анимации и если такой расклад Вас
не устраивает, то можно поискать в сети контролы (в т.ч. и бесплатные),
которые это позволяют, или же использовать элемент управления
Обозреватель веб-страниц (Microsoft)
или Элемент средства просмотра Web Microsoft (Win95)
Подробный совет по добавлению дополнительных элементов управления,
можно найти здесь [FAQ475] и если Вы им воспользуетесь,
то когда Вам понадобится загрузить нужный графический файл, просто
воспользуйтесь методом Navigate, т.е. :
WebBrowser1.Navigate "C:\Мои рисунки\AniGifCat.gif"
'WebBrowser1.Navigate URL:="C:\Мои рисунки\AniGifCat.gif" |
Обратите внимание на то, что после загрузки изображения, на экране
появится полоса прокрутки (scrollbar), причём мы будем её видеть, даже
если размер контрола будет превышать размеры загружаемого изображения.
Впрочем, от полосы прокрутки можно избавиться, как минимум, двумя
способами :
Вариант I.
| Private Sub UserForm_Initialize()
WebBrowser1.Navigate "C:\AniGifCat.gif"
End Sub
Private Sub UserForm_Activate()
WebBrowser1.Document.Body.Style.Overflow = "Hidden"
End Sub |
Вариант II.
| Private Sub UserForm_Initialize()
iFileAnimGif$ = "C:\AniGifCat.gif"
Open "C:\MyTempHTML.html" For Output As #1
Print #1, "<HTML>"
Print #1, "<BODY SCROLL=""NO"">"
Print #1, "<IMG SRC=""" & iFileAnimGif$ & """>"
Print #1, "</BODY></HTML>"
Close #1
WebBrowser1.Navigate "C:\MyTempHTML.html"
End Sub
'Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Kill PathName:="C:\MyTempHTML.html"
'End Sub |
Вариант II(Б).
| Private Sub UserForm_Initialize()
WebBrowser1.Navigate "about:blank" 'WebBrowser1.Navigate ""
End Sub
Private Sub UserForm_Activate()
iFileAnimGif$ = "C:\AniGifCat.gif"
iText$ = "<HTML><BODY SCROLL=""NO""><IMG SRC=""" & iFileAnimGif$ & """></BODY></HTML>"
WebBrowser1.Document.Write iText$
End Sub |
К сожалению, данный способ также зависит от настроек обозревателя, и если
у Вас не установлен "флажок"
Воспроизводить анимацию на вэб-страницах, то анимации Вы не увидите.
Ответ :
Если Вы используете WebBrowser для отображения картинки(графики),
то, возможно, замечали, что картинка отображается в браузере не с крайнего
левого верхнего угла, а с некоторым отступом. И если Вы хотите избавиться
от этого отступа, то, используя событие UserForm_Activate, просто измените
значения двух свойств :
Private Sub UserForm_Activate()
With WebBrowser1.Document.Body
.LeftMargin = "0"
.TopMargin = "0"
End With
End Sub |
Ответ :
Если возникнет необходимость "разместить" на UserForm содержимое
указанной папки, причём с возможностью работы с папками/файлами, то для
решения поставленной задачи, можно опять использовать элемент управления
Обозреватель веб-страниц (Microsoft)
или Элемент средства просмотра Web Microsoft (Win95)
Подробный совет по добавлению дополнительных элементов управления,
можно найти здесь [FAQ475] и если Вы им воспользуетесь,
то когда Вам понадобится загрузить папку, просто воспользуйтесь методом
Navigate, указав путь к реально существующей папке, т.е. :
Private Sub UserForm_Initialize()
WebBrowser1.Navigate Application.Path
End Sub |
Ответ :
Возможно Вы замечали, что во время выполнения некоторых операций,
к примеру, копирование/удаление файлов, папок можно наблюдать некоторые
анимационные эффекты, такие как перемещающиеся из одной папки в другую
бумаги, выбрасываемые в мусорную корзину скомканные листы и т.п. Если
такие же анимационные ролики Вы хотите видеть и на своём нестандартном
диалоговом окне, то, используя этот [FAQ475]
добавьте элемент управления Microsoft Animation Control, version ...,
а затем, для загрузки avi файлов используйте метод Open, для их демонстрации
метод Play, а для остановки метод Stop (небольшой пример, а также
некоторые avi файлы, можно скачать здесь)
Если же необходимого элемента управления нет в списке доступных
элементов управления, например, в случае отсутствия на компьютере файла
MSComct2.ocx или Comct232.ocx, то осуществить задуманное можно с помощью
функций WinAPI (более подробно)
Ответ :
Актуально только для DialogSheet + ListBox
Если Вы используете окно диалога Excel5.0 DialogSheet +
элемент управления список ListBox с многократным выделением,
и хотите узнать, выбрал ли пользователь что-нибудь в списке, причём,
осуществить это необходимо без цикла, то можно "вспомнить", что у
родного элемента управления есть метод Selected.
If Application.Or(DialogSheets(1).ListBoxes(1).Selected) = True Then
MsgBox "Выбран, как минимум, один элемент списка", , ""
Else
MsgBox "Увы, ничего не выбрано", , ""
End If |
Актуально для Microsoft Excel 2000 (и старше)
|
If UBound(Filter(DialogSheets(1).ListBoxes(1).Selected, True, True)) > -1 Then
MsgBox "Выбран, как минимум, один элемент списка", , ""
Else
MsgBox "Увы, ничего не выбрано", , ""
End If |
Примечание :
Если список расположен на листе, то
просто замените DialogSheets(1) на необходимый об'ект.
Данный способ не применим к ActiveX элементу управлению,
однако, там можно просто использовать свойство ListIndex
| | | | | | | | | | | | | | |
|