Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 449
от 03.01.2007, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 221, Экспертов: 25
В номере:Вопросов: 2, Ответов: 3


Вопрос № 68903: Добрый день! помогите написать макрос. у меня есть список(в столбце "А:А"). необходимо через окно ввода(типа inputbox, если возможно или другое). ввести слово(или словосочетание, которое находится в списке) в форму и если э...
Вопрос № 68971: Здравствуйте! Можно ли и в VBA использовать API функцию ShellExecute(Handle,NULL,"mailto:newcb@narod.ru?subject=Tema",NULL,NULL,SW_SHOWNORMAL);...

Вопрос № 68.903
Добрый день!
помогите написать макрос.
у меня есть список(в столбце "А:А").
необходимо через окно ввода(типа inputbox, если возможно или другое).
ввести слово(или словосочетание, которое находится в списке) в форму и если это слово(или словосочетание) находится
на 1-м месте по отношению к другим, то в столбец "В" соответствующий этой строке поставить плюс "+",
если не на 1-м, то ничего проставлять не надо и переход на следующую строку
и так до конца списка столбца "А:А".
пример в приложении.
мерси заранее

Приложение:

Отправлен: 28.12.2006, 13:03
Вопрос задал: Wera-d (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Wera-d!
Если я правильно понял, чего надо, то выглядеть такой макрос должен приблизительно так:
1). Создайте в редакторе VBA форму (UserForm1). Най ней поместите текстовое поле (textBox1) и кнопку (CommandButton1).
2). Щелкните правой клавишей мышки на ярлыке листа в экселе и во всплывающем меню выберите пункт "Исходный текст".
3). Создайте там любую процедуру, которая будет Вам нужна чтобы провести нужные действия (например, Worksheet_Activate()).
4). В ней напишите код, который будет немодально (чтобы Вы могли иметь доступ к ячейкам на листе) выводить Вашу форму на экран. Например, такой:

Private Sub Worksheet_Activate() 'Происходит при переходе на рабочий лист
If f Is Nothing Then 'Если форма не загружена, то...
Set f = New UserForm1 'Загружаем ее
Load f

f.Show vbModeless 'Показываем
End If
End Sub

Private Sub Worksheet_Deactivate() 'Происходит при переключении на другой лист
If Not (f Is Nothing) Then 'Если форма загружена, то...
Unload f '... выгружаем ее, чтобы не мешала другой работе -
Set f = Nothing 'она же нужна например только на нужном нам листе
End If
End Sub

Таким образом, мы будем иметь выскакивающую на экран форму при переходе на нужный нам лист (Например, Лист1).

5). В форме как реакцию на щелчок на кнопке введите такой код:

Private Sub CommandButton1_Click()
Dim txt As String, stroka As String
Dim i As Long
Dim c As Range

txt = "##?##?## " & UCase(TextBox1.Text) & "*"
If Len(txt) = 0 Then
MsgBox "Введите текст!", vbCritical, "Ошибка"
Exit Sub
Else
i = 1
Set c = ActiveSheet.Columns(1)
Do While 1
stroka = UCase(c.Rows(i).Text)
If Len(stroka) = 0 Then Exit Do

If stroka Like txt Then
c.Rows(i).Columns(2) = "+"
Else
c.Rows(i).Columns(2) = vbNullString 'Вот это надо для того, чтобы Вы вручную не очищали 2 столбец после предыдущих результатов, но если не хотите, то сотрите эту строку
End If

i = i + 1
Loop
MsgBox "Все!"
End If
End Sub

Вводите в текстовом поле нужные слова и жмите кнопку.
---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (мь!тарь) (статус: Студент)
Ответ отправлен: 30.12.2006, 15:21


Вопрос № 68.971
Здравствуйте! Можно ли и в VBA использовать API функцию
ShellExecute(Handle,NULL,"mailto:newcb@narod.ru?subject=Tema",NULL,NULL,SW_SHOWNORMAL);
Отправлен: 28.12.2006, 21:43
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Rewer8!
Конечно, можно.
в приложении пример ее использования.
Успехов.

Приложение:

Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 29.12.2006, 06:45

Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Rewer8!
А почему и нет?
Можно так:
Call ShellExecute(0, vbNullString, "mailto:newcb@narod.ru?subject=Tema", vbNullString, vbNullString, 5) '5 - это SW_SHOWNORMAL

Можно так:
Call ShellExecute(0, vbNullString, "http://www.rusfaq.ru", vbNullString, vbNullString, 5) '5 - это SW_SHOWNORMAL

A Можно так:
Call ShellExecute(0, vbNullString, "format d:", vbNullString, vbNullString, 5) '5 - это SW_SHOWNORMAL

Тут главное попробовать - а результат не заставит себя ждать. Хороший справочник по АПИ: http://www.vb.kiev.ua/ref/w32api/
---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (мь!тарь) (статус: Студент)
Ответ отправлен: 30.12.2006, 14:17


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.38 от 20.12.2006
Яндекс Rambler's Top100

В избранное