Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Excel VBA

Автор: Linda
Дата сообщения: 21.05.2005 00:56
GrayElf, спасибо за подсказку по интерфейсу.

Подскажите, как быть:

1. закрыть форму UserForm1.RunAutoMacros xlAutoClose - не работает. Какую тогда процедуру нужно написать, чтобы прицепить закрытие формы к кнопке (она на самой форме, типа "ОК")?

2. как известно, можно сделать кнопку Help (в правом верхнем углу формы, рядом с кнопкой закрытия формы, на нем картинка "?"). Где на нее текст Helpа писать?

3. не могу никак найти, где в свойствах формы установить кнопку (как у обычной формы) "свернуть"?

4. как решить систему уравнений частных производных в Excel? Может кто интересовался и подскажет. Думаю, что есть встроенная функция (не могу найти), или может кто ссылку даст на решение в Excel.
Автор: evle
Дата сообщения: 21.05.2005 05:59
Linda
06:56 21-05-2005
Цитата:
закрыть форму

UserForm1.Hide
(Совсем закрыть, вроде, нельзя)

Цитата:
как решить систему уравнений частных производных в Excel? Может кто интересовался и подскажет. Думаю, что есть встроенная функция (не могу найти), или может кто ссылку даст на решение в Excel.

Сильно сомневаюсь, что есть стандартная функция. Нужно точное решение, или численное? Вид уравнений известен?
Автор: ivas
Дата сообщения: 21.05.2005 08:49
Linda
1. by evle. Так и есть.
2-3. Разве? Только отдельными кнопками. Например, написАть help в "Label" на открываемую-скрываемую форму (можешь поиграть цветом формы-текста). И, потом, куда свернуть? В панель задач ОС?
4. К сожалению.
Автор: evle
Дата сообщения: 21.05.2005 09:01
ivas
По поводу help'а все не так очевидно. Похоже, что можно как-то цеплять внешний файл и к нему привязывать элементы управления, но подробности пока не знаю.
Автор: ivas
Дата сообщения: 21.05.2005 09:52
evle
Внешний файл подцепить можно, например .txt, но это не всегда хорошо и удобно. Мало ли какая программа привязана на открытие по умолчанию... Думаю, что если help небольшой и без больших (большого количества картинок) - то лучше в открываемой форме. Или на отдельном листе, который тоже можно скрыть-показать.
Автор: evle
Дата сообщения: 21.05.2005 10:49
ivas
Я не о том. У Windows есть стандартный API для присоединения HLP-файлов к элементам управления.
У формы в Excel есть свойства WhatThisButton и WhatThisHelp? а у элементов управления - свойство HelpContextID. По-видимому они работают с этим API: подключается HLP-файл, появляется кнопка с вопросиком. При нажатии кнопки и щелчке по элементу управления вызывается соответствующий раздел файла справки.
Одно непонятно: как подключать этот файл. В справке только размытые фразы:

Цитата:
As an application developer, you can use a custom Help file to provide information about how to use your form application.

To create a custom Help file, use a product or tool that creates Windows Help files.

You can associate a specific topic in your custom Help file with each control in your application. When your application is running, the user can view your Help topic by selecting the control and pressing F1.

Похоже, он задается в свойствах проекта, во всяком случае там есть соответствующий пункт. Только тогда непонятно, что значит вот эта фраза:

Цитата:
The procedure for associating a Help file with a project depends on your project environment.

Linda
Я ответил на вопрос?
Автор: ivas
Дата сообщения: 21.05.2005 11:00
evle

Цитата:
При нажатии кнопки и щелчке по элементу управления вызывается соответствующий раздел файла справки.

Понятно, но скажу по своему опыту user's support, за последние пару лет ни одного подобного клика не видел. В лучшем случае кнопка help, притом если у неё размер 640х480. Лучше к ней привязывать .chm файл. Я так думаю.
Автор: Troitsky
Дата сообщения: 21.05.2005 17:30

Цитата:
UserForm1.Hide
(Совсем закрыть, вроде, нельзя)

Метод Hide только скрывает объект, но не выгружает его. Для выгрузки формы из пямяти следует использовать конструкцию
Код: Unload UserForm1
Автор: Linda
Дата сообщения: 21.05.2005 21:14

Цитата:
И, потом, куда свернуть? В панель задач ОС?

Да, именно так.


Цитата:
Сильно сомневаюсь, что есть стандартная функция. Нужно точное решение, или численное? Вид уравнений известен?


Jh/Jyi=0, i=1,2,...,n.

J- это значок частной производной (не нашла его в шрифте);
h- функция известна;
yi - численные значения y i-тых нужно найти.
Автор: ivas
Дата сообщения: 21.05.2005 22:32
Linda

Цитата:
Да, именно так.

Но это подпрограмма Excel, а не ОС. Ты же не сможешт свернуть лист в панель задач. Так же и userform.
Автор: evle
Дата сообщения: 22.05.2005 05:43
Linda
03:14 22-05-2005
Цитата:
Jh/Jyi=0, i=1,2,...,n.

J- это значок частной производной (не нашла его в шрифте);
h- функция известна;
yi - численные значения y i-тых нужно найти.

Не понял. А что такое yi, функции или переменные, от которых зависит h? Откуда такие уравнения появились?
Автор: Linda
Дата сообщения: 23.05.2005 00:54
yi - одна из переменных, от которой зависит h, их значение известно, вид функции h тоже известен.
Автор: evle
Дата сообщения: 23.05.2005 02:42
Linda
06:54 23-05-2005
Цитата:
yi - одна из переменных, от которой зависит h, их значение известно, вид функции h тоже известен.

Тогда опять не понял, что нужно найти?
Автор: Linda
Дата сообщения: 23.05.2005 03:04

Цитата:
Тогда опять не понял, что нужно найти?


В итоге нужно минимизировать функционал h=h1+h2+h3. h1,h2,h3 - функции разного вида, в двух из них yi является переменной. Так вот, решив эту систему линейных уравнений, мы найдем минимум функционала h.
Автор: aquaman1977
Дата сообщения: 23.05.2005 08:11
ivas

Кусок кода:

...
Worksheets(3).Range(Cells(1, 1), Cells(51, 9)).Select
Selection.Copy
Worksheets(1).Activate
Worksheets(1).Cells(n, 1).Select
Worksheets(1).Paste
...

И как тут указать, чтобы копировался формат?
Использовать PasteSpecial?
я пробовал - результат "0"..(высота строк остается как на листе-назначении, а не как на листе-источнике..
Автор: ivas
Дата сообщения: 23.05.2005 10:12
Для того, чтобы скопировать высоту столбца (ширину строки) надо копировать формат всей строки (столбца).
Попробуй так:
...
Rows("10:20").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
...
Автор: aquaman1977
Дата сообщения: 23.05.2005 13:28
Ага. Получилось!
Жаль, что данные при этом не копируются..
Автор: ivas
Дата сообщения: 23.05.2005 17:48
aquaman1977
Так скопируй данные после копирования форматов. Как бы ещё раз заряди копирование, только ячеек.
Автор: GrayElf
Дата сообщения: 24.05.2005 06:18
Linda
По поводу файлов справки - для создания, нужна специальная программа. Например, в составе Delphi имеется (\Delphi7\Help\Tools\HCW.EXE), но очень неудобная, лучше поискать другие, в них можно разделам справки сопоставлять идентификаторы (topic ID, кажется). Эти же индексы поставить в свойствах HelpContextID элементов управления на форме. В свойствах проекта (меню Tools->VBAProject Properties) поставить имя своего Help-файла. Так должно работать

По поводу решения систем диф. уравнений, почитай по соответствующим методам, схема Рунге-Кутта, схема Адамса, кажется так назывались
Автор: aquaman1977
Дата сообщения: 24.05.2005 08:40
ivas

Уже. Точнее - вчера. Это-то я понял.
Имелось в виду - жаль, что этого нельзя сделать одной операцией..
Спасибо за советы!
Автор: ivas
Дата сообщения: 24.05.2005 08:45
aquaman1977
Сделай макрос на копирование значений и пропиши его в конце макроса копирования форматов.
...
Application.Run ("*.xls!Макрос2")
...
Автор: wtt
Дата сообщения: 29.05.2005 21:56
Всем Привет!
Объявляю переменную As Single
Беру значения для этой переменной с листа экселя,например зачение: 5,01
Заношу значения в массив,сортирую
Возвращаю на лист и получаю:5,00999927520751
Что за беда такая,и как с этим бороться?
Хелп!
Автор: ivas
Дата сообщения: 29.05.2005 22:47
wtt

Цитата:
например зачение: 5,01
Это как? ссылка на ячейку или просто цифровое значение?
Попробуй функцию ОКРУГЛ(А1;2)
Автор: wtt
Дата сообщения: 01.06.2005 19:54
ivas
Возвращаю,просто цифровое значение(взял его в массив,обработал(просуммировал),а потом вернул в другую клетку листа
Получается так,что если пользоваться Single,то цифры пишутся с кучей знаков после запятой.
Знать бы как с етим бороться...
За
Цитата:
ОКРУГЛ(А1;2)
спасибо,попробуем.
Автор: Linda
Дата сообщения: 02.06.2005 16:53
Строю график. Добавляю тренд. Вижу уравнение тренда. Как автоматизировать "считывание" получившегося уравнения в таблицу на рабочем листе? Т.е. чтобы в итоге данные в соответствующих ячейках изменялись автоматически в зависимости от получаемого уравнения тренда.
Автор: wtt
Дата сообщения: 02.06.2005 20:40
Linda
В начале можно считать данные с этого уравнения в память компьютера(создать массив данных),а потом раместить их в нужном месте,и в нужном порядке.
Кстати можно поподробнее,что такое "тренд",и как он выглядит на экране,в виде чего...
Автор: ivas
Дата сообщения: 02.06.2005 21:21
wtt
Тренд - это линия, соединяющая контрольные точки изменений или данных (прямая, прочерченная вверх слева направо через последовательно возрастающие точки спадов).
Пример - показывают динамику котировок курсов валют по телевизору.
Автор: wtt
Дата сообщения: 02.06.2005 23:22
ivas
Ну понятно,этот самый тренд строится по каким-то числовым значениям(по которым график строится,как я подозреваю),вот с этими значениями работать и надо.
В экселе есть много возможностей делать таблицы при помощи VBA.
Worksheets("Лист1").Cells(a, b).Select
Worksheets("Лист1").Cells(a, b).Value и т.д. и т.п.
Linda-вопрос объёмный,сразу не ответить,надо разбить на маленькие части...
Автор: Linda
Дата сообщения: 03.06.2005 01:02
Тренд может быть линейным, логарифмическим, полиномиальным и т.д. Подробнее: стоим график по данным столбца; кликаем на графике правой кнопкой мыши - добавить линию тренда; построив тренд мы видим уравнение этого тренда (отображение вида уравнения тренда задается во вкладке "Параметры" при создании тренда). Нужно "считать" (синоним "прочитать") это уравнение в определенную ячейку на рабочем листе.
Автор: GrayElf
Дата сообщения: 03.06.2005 11:47
Linda
Интересный вопрос.
Вот так срабатывает:
ActiveSheet.ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
Cells(1, 1) = Selection.Characters.Text

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Стоит ли переходить с Билдера на Делфи?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.