Microsoft Excel:

  Таблицы и VBA. Справочник.
  Вопросы и Ответы. Советы. Примеры.
Меню FAQ | Макросы | ActiveX


Rambler's Top100


Counter CO.KZ


    [1] [2] [2/1] [2 t] [3] [4]

  1. Как воспользоваться дополнительным элементом управления ? 09.03.2009
  2. Как найти и скачать некоторые элементы управления от Microsoft ? 07.03.2010
  3. Как найти и скачать замены "стандартным" элементам управления, а также некоторые дополнительные контролы ? 15.06.2016
  4. Как создать строку состояния на диалоговом окне UserForm ? 17.09.2007
  5. Как создать и использовать ProgressBar ? 01.09.2009
  6. Как создать свой собственный Прогресс Бар / ProgressBar [1] ? 01.09.2009
  7. Как использовать собственный ProgressBar [2] при неизвестном времени выполнения программы ? 15.06.2016
  8. Как изменить количество делений ("кирпичиков") в ProgressBar ? 01.09.2009
  9. Как изменить цвет ProgressBar ? 01.09.2009
  10. Как отобразить стандартное диалоговое окно, позволяющее выбрать нужный цвет ? 18.09.2007
  11. Как прокручивать список в ComboBox используя колёсико мышки ? 27.07.2008
  12. Как сделать так, чтобы в ComboBox каждый элемент списка был окрашен в свой цвет ? 10.10.2010
  13. Как изменить цвет заливки отдельных элементов списка ListBox ? 17.10.2010
  14. Как создать ListBox, содержащий перечень всех листов книги, причём с заливкой, идентичной цвету ярлычка ? 26.10.2014
  15. Как создать ListBox позволяющий перетаскивать файлы/папки из проводника на ListBox и заполнять список именами этих файлов, причём, исключая повторы ? 22.05.2011
  16. Как отсортировать столбец в ListView, с помощью клика заголовка этого столбца ? 20.03.2012
  17. Как в ListView отсортировать столбец, содержащий даты ? 20.03.2012
  18. Как в ListView быстро перейти в режим редактирования ? 27.12.2015
  19. Как в текстовом поле TextBox выделять только буквы английского (латиница) или русского (кириллица) алфавита ? 08.01.2010
  20. Как прокручивать изображение в Image, если размер рисунка больше контрола ? 21.08.2011
  21. Как показывать анимационные .gif ? 24.04.2014
  22. Как убрать отступ у картинки в WebBrowser ? NEW 01.04.2017
  23. Как на UserForm отобразить папку и позволить пользователю работать с папками и файлами ? 14.12.2014
  24. Как воспроизвести небольшой "анимационный ролик" ? 09.03.2009
  25. Как узнать выбрано ли значение в 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

    Вопросы - Синонимы
  • Как создать разноцветный выпающий список в ComboBox ?
  • Как создать разноцветный список в ListBox ?


  • Воспроизведение любых опубликованных здесь материалов возможно только с письменного разрешения автора : Microsoft Excel 95, 97, 2000, XP

  • © 2004-2017 Климов П.Ю. Все права защищены. WebDesign & Error's Klimoff