Вывод на печать в зависимости от свойств

Программирование на Visual Basic for Applications
Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Вывод на печать в зависимости от свойств

Сообщение Djars » 19.10.2004 (Вт) 17:29

Есть форма: поле со списком.
По умолчанию выбор стоит:"выберите" и не выводится на печать.
Как сделать так, что после выбора другой альтернативы свойство формы менялось?

как это действие называется? чтобы не просто клик на форму и выполнять макрос, а именно при изменении значения.


Код: Выделить всё
    If Shapes("Drop Down 51").Value <> "ТВ каналы" Then
    ActiveSheet.Shapes("Drop Down 51").Select
    With Selection
        .PrintObject = True
    End With
    ActiveShapes.Deselect

подумал, что можно так, но не уверен.
И еще вопрос, почему нельзя вставить строку msg "тра-ла-ла", чтобы срабатывало при клике? каждый раз выдает разную ошибку, читаю что-то в хелпе, исправляю, и новая ошибка на том же месте.
Может кто знает как внедрить msg? Спасибо

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2004 (Вт) 17:37

Ой, shapes...
Ну их :) Переходи на forms.

Хотя то, что ты написал, должно работать :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 19.10.2004 (Вт) 17:42

в формах легко изменять их наполнение.
А как задать список в элементе управления и решить ту же самую задачу? хотя бы примерно

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 19.10.2004 (Вт) 17:50

Код: Выделить всё
    If ActiveSheet.Shapes("Drop Down 51").Value <> "ÒÂ êàíàëû" Then
    ActiveSheet.Shapes("Drop Down 51").Select
    With Selection
        .PrintObject = True
    End With
    ActiveShapes.Deselect
    End If

ActiveSheet.Shapes("Drop Down 51").Value - объект не поддерживает этот метод...

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 20.10.2004 (Ср) 17:48

Может есть у кого кусок комбинированного списка? а именно его код? можете его запостить?
Нужны строки с описанием элемента списка и определением визибилити.

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Заголовок

Сообщение Djars » 21.10.2004 (Чт) 22:10

Может знает кто, как убрать из формы верхнюю строчку с заголовком и крестиком?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2004 (Чт) 22:34

Найти её окно и сделать SetWindowLong hWnd, WS_STYLE, GetWindowLong(hWnd, WS_STYLE) And Not WS_CAPTION
Изображение

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 21.10.2004 (Чт) 22:56

tyomitch писал(а):Найти её окно и сделать SetWindowLong hWnd, WS_STYLE, GetWindowLong(hWnd, WS_STYLE) And Not WS_CAPTION
Окно формы? т.е. мне это нужно прописать на определенное действие с формой? я не понимаю
вот, что я с ней делаю:
Код: Выделить всё
Private Sub Workbook_Open()
  frmSplash.Show
  Unload frmSplash
  End Sub

где мне сделать SetWindowLong hWnd, WS_STYLE, GetWindowLong(hWnd, WS_STYLE) And Not WS_CAPTION?

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 21.10.2004 (Чт) 22:59

и где вообще брать документацию? на сайте мелкософта на английском? или во встроенном справочнике? так чтобы быстрей и понятней

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.10.2004 (Чт) 23:15

Не нуно так над forms издеваться... У них вообще хвнд нет. Во всяком случае, тебе о нём не говорят.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 21.10.2004 (Чт) 23:29

GSerg писал(а):Не нуно так над forms издеваться... У них вообще хвнд нет. Во всяком случае, тебе о нём не говорят.

кто мне об этом не говорит :?: документация?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2004 (Чт) 23:32

Как нету? Конечно, есть. Класса ThunderDFrame

Djars, hWnd ищется функцией FindWindowEx.
Вся документация берётся на msdn.microsoft.com/library :-)
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.10.2004 (Чт) 23:34

Тёёёёмыыыыч....
Обрати внимание на название раздела :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2004 (Чт) 23:41

GSeeeeerg....
Только что создал UserForm в Ворде, запустил и посмотрел шпиёном её класс. Кто не верит, путь проверит ;-)
Изображение

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 21.10.2004 (Чт) 23:45

tyomitch писал(а):GSeeeeerg....
Только что создал UserForm в Ворде, запустил и посмотрел шпиёном её класс. Кто не верит, путь проверит ;-)
ну а где прописать параметр то этот??

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.10.2004 (Чт) 23:47

Вот ты как? :)

Ладно, рассказываю историю про то, как делать не нужно.
Мой перый тендер на RAC состоял в том, чтобы немного поиздеваться над окном Word. Так вот, я поиздевался над своим 97 офисом под виндой XP, прозрачность ему понаставлял (гы-гы-гы...), и заголовок поменял на tool window (хе-хе-хе). Возрадовавшись, послал всё это байеру, а он говорит - не работает ни х. Отлаживал через remote assistance этот канадский комп... Действительно, ни х. Потому что у него офис 2003, а его создатели, видимо, решили и от этого подстраховаться.

Вывод: не нуно делать того, что не позволяет VBA, ибо впоследствии может оказаться очень нехорошо :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 21.10.2004 (Чт) 23:56

Код: Выделить всё
Private Sub UserForm_Initialize()
    'Add list entries to combo box. The value of each
    'entry matches the corresponding ListIndex value
    'in the combo box.
    ComboBox1.AddItem "Left Top"        'ListIndex = 0
    ComboBox1.AddItem "Left Center"     'ListIndex = 1
    ComboBox1.AddItem "Left Bottom"     'ListIndex = 2
    ComboBox1.AddItem "Right Top"       'ListIndex = 3
    ComboBox1.AddItem "Right Center"    'ListIndex = 4
    ComboBox1.AddItem "Right Bottom"    'ListIndex = 5
    ComboBox1.AddItem "Above Left"      'ListIndex = 6
    ComboBox1.AddItem "Above Center"    'ListIndex = 7
    ComboBox1.AddItem "Above Right"    'ListIndex = 8
    ComboBox1.AddItem "Below Left"      'ListIndex = 9
    ComboBox1.AddItem "Below Center"    'ListIndex = 10
    ComboBox1.AddItem "Below Right"    'ListIndex = 11
    ComboBox1.AddItem "Centered"        'ListIndex = 12
    'Use drop-down list
    ComboBox1.Style = fmStyleDropDownList
    'Combo box values are ListIndex values
    ComboBox1.BoundColumn = 0
    'Set combo box to first entry
    ComboBox1.ListIndex = 0


    ComboBox1.Left = 18
    ComboBox1.Top = 36
    ComboBox1.Width = 90
    ComboBox1.ListWidth = 90
   
End Sub


вот так я нашел все таки как добавлять значения.
А как заставить список раскрываться?
Что нужно прописать в
Код: Выделить всё
Private Sub ComboBox1_Click()
End Sub

А то в форме значение появляется, а на комбобокс не жмется:(
И можно ли все это перенести с формы на лист Экселя? (я имею в виду объявление комбобокса?)

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 22.10.2004 (Пт) 0:00

гм.. я просто поставил enabled=false на форме

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.10.2004 (Пт) 0:30

Djars, вот как делать не нужно: :lol:
Код: Выделить всё
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const WS_CAPTION = &HC00000
Private Const GWL_STYLE = -16&

Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4

Private Sub UserForm_Activate()
Dim hWnd As Long
hWnd = FindWindow("ThunderDFrame", Me.Caption)
SetWindowLong hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) And Not WS_CAPTION
SetWindowPos hWnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER
End Sub


Проверил на Ворде2003 - заголовок прячется.
Изображение

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 22.10.2004 (Пт) 10:12

И в экселе тоже прячется!! Это просто чудо какое-то :D
Спасибо :!:

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 22.10.2004 (Пт) 10:19

к примеру я хочу, чтобы в каждом вордовском файле была моя всплывающая картинка.
Я добавил в шаблон нормал все формы, параметры, сертификаты.
Сохранил его, но в новые файлы ничего такого не вставляется.
Как быть?

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 22.10.2004 (Пт) 10:25

сделал условие на создание нового, и все работает, но только когда я сам нажму ctrl+N. А при запуске этого не происходит.
Какой там механизм применения шаблона?
Может поставить при открытии шаблона создание нового файла?
Тогда будет открываться два файла. А второй удалять?

И еще, чтобы эти параметры сохранялись в документе, чтобы на других компах просматривались.
А как быть с картинками? их можно к файлу прилинковать?


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 61

    TopList