Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.11.2008, 09:47   #1
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
Стрелка Обратиться к впадающему списку

Привет всем! подскажите как обратиться к выпадающему списку через код VBA? с ячейкой все понятно [T33].Value а как мне "зацепить" Васю Пупкина (см. скрин)

З.Ы. у меня задача. Человек выбирает себя из списка, заполняет отчет затрат, запускает макрос (отправить отчет) и макрос по имени выбранного человека ищит на скрытом листе мыло начальника (таблица «человек»-«начальник») и отправляет отчет .
У меня все готово, нужно только понять как «зацепить» выбранное имя. Подскажите…
Заранее спасибо!
Exo вне форума
Старый 28.11.2008, 10:39   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Переходите в режим конструктора (панель инструментов ЭЛЕМЕНТЫ УПРАВЛЕНИЯ), и выделяете мышкой нужный Вам элемент управления ComboBox (то, что Вы назваете выпадающим списком)

В строке формул (слева, там где находится поле для отображения имён объектов) Вы увидите название этого комбобокса - например, ComboBox1

Теперь можете вывести его содержимое на экран при помощи кода
MsgBox Worksheets("Лист1").ComboBox1.Value

Или сделать так, чтобы при изменении значения в комбобоксе производилось какое-либо действие. Для этого (оставаясь в режиме конструктора) щелкните правой кнопкой на комбобоксе, и выберите пункт ИСХОДНЫЙ ТЕКСТ.
Увидите примерно вот что:

Private Sub ComboBox1_Change()

End Sub



Ну а далее вписывайте в этот обработчик любой код, например, такой:
Цитата:
Private Sub ComboBox1_Change()
MsgBox "Новое значение выпадающего списка - " & Me.ComboBox1.Value
End Sub
EducatedFool вне форума
Старый 28.11.2008, 11:55   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

А если Вася Пупкин выберет из списка Федю Шнопсельмана и отправит вместо него заведомо неверный отчет? Начальник станет Федю нагибать по всякому, лишит его сладкого, квартальной премии и других удовольствий. Это не хорошо.
Если у вас домен и в него попадают только зарегистрированные пользователи, я бы имя текущего пользователя выбрал из Environ("username").
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 28.11.2008, 12:35   #4
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

да спасибо все ок!
но встали еще несколько вопросов,

1. мне нужно создать директорию и сохранить активную книгу, я пишу:
MkDir ("C:\НОВАЯ_ПАПКА")
ActiveWorkbook.SaveCopyAs "C:\НОВАЯ_ПАПКА\Business Trip Report.XLS"

НО если такая директория уже есть - возвращается ошибка, как мне проверить есть ли директория которую я создаю...и если есть перейти сразу к сохранению, ну а если нет, создать и уже потом сохранить…

2. как в на этапе сохранения привязать к имени сохраняемого файла текущую дату?
Ну сегодня у нас 28.11.2008, я сохраняю свой отчет сегодня, следовательно мне нужно имя
Business Trip Report 28-11-08.XLS


3. как в коде
SM.Attachments.Add "указать активную книг”
Exo вне форума
Старый 28.11.2008, 12:37   #5
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
А если Вася Пупкин выберет из списка Федю Шнопсельмана и отправит вместо него заведомо неверный отчет? Начальник станет Федю нагибать по всякому, лишит его сладкого, квартальной премии и других удовольствий. Это не хорошо.
Если у вас домен и в него попадают только зарегистрированные пользователи, я бы имя текущего пользователя выбрал из Environ("username").
я предлагал искать адрес начальника по юзеру, НО у нас так себе отношения с IT отделом и получить у них список всех пользователей не реально
Exo вне форума
Старый 28.11.2008, 12:46   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
как мне проверить есть ли директория которую я создаю...и если есть перейти сразу к сохранению, ну а если нет, создать и уже потом сохранить…
Например, так:

Код:
Sub test()
    On Error Resume Next
    MkDir ("C:\НОВАЯ_ПАПКА")
    ActiveWorkbook.SaveCopyAs "C:\НОВАЯ_ПАПКА\Business Trip Report.XLS"
End Sub
Или так:

Код:
Sub test2()
    FolderPath = "C:\НОВАЯ_ПАПКА\"
    If Dir(FolderPath, vbDirectory) = "" Then MkDir FolderPath
    ActiveWorkbook.SaveCopyAs FolderPath & "Business Trip Report.XLS"
End Sub
EducatedFool вне форума
Старый 28.11.2008, 12:52   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
2. как в на этапе сохранения привязать к имени сохраняемого файла текущую дату?
Ну сегодня у нас 28.11.2008, я сохраняю свой отчет сегодня, следовательно мне нужно имя
Business Trip Report 28-11-08.XLS
Код:
Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " at " & Get_Time: End Function


Sub test3()
    FolderPath = "C:\НОВАЯ_ПАПКА\": If Dir(FolderPath, vbDirectory) = "" Then MkDir FolderPath
    ActiveWorkbook.SaveCopyAs FolderPath & "Business Trip Report " & Get_Date & ".xls"
    ' или так: ActiveWorkbook.SaveCopyAs FolderPath & "Business Trip Report " & Get_Now & ".xls"
End Sub
Цитата:
3. как в коде
SM.Attachments.Add "указать активную книг”
Не понял вопроса... По какой код идёт речь?
EducatedFool вне форума
Старый 28.11.2008, 13:09   #8
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

классно, все работает!

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Не понял вопроса... По какой код идёт речь?
Код:
Set OutlookApp = CreateObject("Outlook.Application")
    Set SM = OutlookApp.CreateItem(olMailItem)  'Создаем объект

    SM.To = Boss                                ' электронный адрес Босса
    SM.Subject = "Report"                       'Заполнение поля "Тема"
    SM.Body = "Ля Ля Ля"                      'Заполнение поля "Сообщение"
    SM.Attachments.Add "C:\НОВАЯ_ПАПКА\Business Trip Report.XLS""       'Путь к прикрепляемому файлу
вот мне нужно что бы в строке
Код:
SM.Attachments.Add "C:\НОВАЯ_ПАПКА\Business Trip Report.XLS"
не явно адрес файла указывался, а указать как-то что прикреплять к письму нужно активную книгу
Exo вне форума
Старый 28.11.2008, 13:12   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
вот мне нужно что бы в строке
SM.Attachments.Add "C:\НОВАЯ_ПАПКА\Business Trip Report.XLS"
не явно адрес файла указывался, а указать как-то что прикреплять к письму нужно активную книгу
SM.Attachments.Add activeworkbook.FullName
EducatedFool вне форума
Старый 28.11.2008, 14:01   #10
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

СПАСИБО! ВСЕ РАБИТ!
Exo вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выбрать последнее по списку значение? CaustiC Microsoft Office Excel 2 17.11.2008 09:03
Обратиться к классу (Delphi) Air Помощь студентам 16 17.07.2008 19:51
Переименовать файлы по списку!? jungo Microsoft Office Excel 14 19.05.2008 11:43
Как из проги обратиться к Excel ? Drozd Общие вопросы Delphi 3 26.03.2008 18:24
Обратиться к таблице Access Inbox БД в Delphi 8 26.06.2007 11:37