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

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


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

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

Выпуск № 392
от 14.10.2006, 18:35

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


Вопрос № 58152: Здравствуйте, как сделать, что когда вводится значение Синуса - то ответом будет угол в радианах и градусах, и так для Косинуса, Тангенса, Котангенса?...
Вопрос № 58204: Уважаемые эксперты, здравствуйте. Не подскажите ли как на VB можно сделать изменение с помощью мышки двух-трех TextBox-ов или ImageList типа как в ACDSEE или FastStown ?То есть увеличивая один контрол, автоматически уменьшается второй.Заранее все...
Вопрос № 58256: Здраствуйте всем... Извините ... Я не изучал vba, хотелось бы узнать можно ли передавать как входной параметр выделенные ячейки? Я так думаю если ячейка одна (то мне просто надо найти нужную функцию в msdn), а если их несколько? (тоже самое, ...

Вопрос № 58.152
Здравствуйте, как сделать, что когда вводится значение Синуса - то ответом будет угол в радианах и градусах, и так для Косинуса, Тангенса, Котангенса?
Отправлен: 08.10.2006, 19:15
Вопрос задал: ataman (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: VLK
Здравствуйте, ataman!

Вообще-то в VB существуют такие функции, как:
ATN - возвращает арктангенс числа в радианах
COS - возвращает косинус числа
SIN - возвращает значение синуса угла
TAN - возвращает значение тангенса угла
Используются, например, так:
lblSinus = Sin(45),
txtCosinus = Cos(65) и т.д.
Перевод градусов в радианы и наоборот объяснить не смогу. Вообще, вопрос не совсем корректен: что значит ввести значение синуса ? Синус является функцией, которая сама принимает вводные данные и возвращает определенное значение. Аналогично косинус, тагенс и арктангенс.
Ответ отправил: VLK (статус: 7-ой класс)
Ответ отправлен: 08.10.2006, 22:36

Отвечает: AlexanderZh
Здравствуйте, ataman!
Обратная функция для синуса - арксинус = Atn(X / Sqr(-X * X + 1))
Для косинуса - аркскосинус = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Для тангенса - арктангенс = Atn(X)
Для котангенса - арккотангенс = Atn(X) + 2 * Atn(1)

Все значения функций получаются в радианах. Для перевода в градусы - умножить 180/pi (pi=3.1415926535897932) приблизительно :)
Надеюсь понятно.
---------
Людей можно поделить на 10 типов: тех, кто понимает двоичную систему и тех, кто нет... © народное
Ответ отправил: AlexanderZh (статус: Студент)
Ответ отправлен: 09.10.2006, 03:01


Вопрос № 58.204
Уважаемые эксперты, здравствуйте.
Не подскажите ли как на VB можно сделать изменение с помощью мышки двух-трех TextBox-ов или ImageList типа как в ACDSEE или FastStown ?То есть увеличивая один контрол, автоматически уменьшается второй.Заранее всем Big Thanks.
Отправлен: 09.10.2006, 04:37
Вопрос задал: Vavunchik (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: fsl
Здравствуйте, Vavunchik!
В качестве примера.
Бросаете на форму Frame1, Text1 и Text2.
Долее, в код вставляете следующее.

Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Text1.Width = X - 50
Text2.Left = X + 50
Text2.Width = Frame1.Width - Text2.Left
End If
End Sub

P.S.
Контейнерами обоих текстбоксов является форма, а не frame1.
Ответ отправил: fsl (статус: 7-ой класс)
Ответ отправлен: 09.10.2006, 09:17

Отвечает: Макаренко Е.В.
Здравствуйте, Vavunchik!
Посмотрите эвенты объекта. Если там есть ObjectChange, WidthChange, HightChange или что-нибудь подобное - на них можно навешивать функции, отвечающие за перерисовку.
---------
осторожность, точность... и горит все синим пламенем! :))
Ответ отправил: Макаренко Е.В. (статус: Студент)
Ответ отправлен: 09.10.2006, 09:33


Вопрос № 58.256
Здраствуйте всем...
Извините ... Я не изучал vba, хотелось бы узнать можно ли передавать как входной параметр выделенные ячейки?
Я так думаю если ячейка одна (то мне просто надо найти нужную функцию в msdn), а если их несколько? (тоже самое, но работа с массивом?)

2. Есть ли возможность написания глобальных функций, которые бы по умолчанию действовали для всех открываемых проектах excel(если уровень безопасности позволяет)?

3. Можно ли как то получить доступ к excell функциям(формулам) из внешней программы (хоть к каким-нибудь)?
Отправлен: 09.10.2006, 13:17
Вопрос задал: Aris (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Aris!
1. Что одна ячейка, что несколько, что все ячейки листа, обращение к ним идет через один интересный интерфейс Range. Посмотрите его в справке VBA для Excel, там много чего написано. Просто если ячеек несколько то Value - вернет двухмерный массив значений, также можно и присваивать значения сразу нескольким ячейкам:
Dim i, j As Long
Dim a(1 To 3, 1 To 3) As Variant
For i = 1 To 3
For j = 1 To 3
a(i, j) = i * 3 + j
Next j
Next i
Range("A1:C3").Value = a

доступ к ячейкам Range - через Range.Cells (Cells тоже возвращает Range).
доступ к выделеным ячейкам через Application.Selection

2. Или поместить нужные макросы в книгу автозагрузки, по умолчанию создается PERSONAL.XLS, но можно создавать свои и поместить их в папку автозагрузки и запускать как макросы(со стороны можно использовать Application.Run). Или же создать книгу с модулем, там прописать все функции, сохранить эту книгу как ADDIN (*.XLA) подключить его как надстройку и эти функции будут доступны всегда, но что бы использовать в VBA проектах нужно установить ссылку (Reference...).

3. Используя Application.WorksheetFunction:
MsgBox Application.WorksheetFunction.Degrees(10)

Если что не так подробно объяснил пишите в почту.
Удачи.
Ответ отправил: HookEst (статус: 4-ый класс)
Ответ отправлен: 10.10.2006, 14:36
Оценка за ответ: 5
Комментарий оценки:
пасибо за ответ, только я не совсем правильно вопрос №1 сформулировал ...

подразумевалось, что я выделяю ячейки нажимаю горячие клавиши для запуска макроса и он работает с этими ячейками (если так нельзя, то может есть алгоритм, мне приходит в голову тогда только в виде установки и поиска спец. символов перед ячейками, но думаю это не совсем рационально, выход на первое время ...)

Ещё раз спс. за ответы, теперь знаю, что искать (в хелпе)...


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное