Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA

Модерирует : ShIvADeSt

ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

   

RUSmafia



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
 
Обсуждаем вопросы только по Excel VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Excel, не относящиеся к программированию, задаем в теме Excel FAQ

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами Excel (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Excel через меню Сервис (Tools) - Макрос (Macro) - Начать запись (Record New Macro). Подробнее здесь. В большинстве случаев получившийся код (Сервис-Макрос-Макросы-Изменить) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
    Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроення помощь (F1), естественно.
     
    Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылазит ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
    Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

     
    Рекомендуется к прочтению:
  • Первые шаги с Excel VBA
  • Excel VBA: Приёмы программирования
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Daily Dose of Excel (eng.) - тематический блог: советы по работе с Excel и прочие материалы
  • Excel Macros & Excel VBA Code Tips, Tricks (eng.) - советы, трюки и уловки
  • Mr. Excel (forum) (eng.) - весьма оживленный форум по Excel&VBA.
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов

  • Всего записей: 556 | Зарегистр. 31-07-2002 | Отправлено: 21:40 14-10-2004 | Исправлено: lucky_Luk, 20:44 13-04-2007
    evle



    1 + int rand(100);
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Linda
    03:14 22-05-2005
    Цитата:
    Jh/Jyi=0, i=1,2,...,n.  
     
    J- это значок частной производной (не нашла его в шрифте);  
    h- функция известна;  
    yi - численные значения y i-тых нужно найти.

    Не понял. А что такое yi, функции или переменные, от которых зависит h? Откуда такие уравнения появились?

    ----------
    For every complex problem, there is a solution that is simple, neat, and wrong.

    Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 06:43 22-05-2005
    Linda



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yi - одна из переменных, от которой зависит h, их значение известно, вид функции h тоже известен.

    Всего записей: 162 | Зарегистр. 19-01-2004 | Отправлено: 01:54 23-05-2005
    evle



    1 + int rand(100);
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Linda
    06:54 23-05-2005
    Цитата:
    yi - одна из переменных, от которой зависит h, их значение известно, вид функции h тоже известен.

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

    ----------
    For every complex problem, there is a solution that is simple, neat, and wrong.

    Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 03:42 23-05-2005
    Linda



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

     
    В итоге нужно минимизировать функционал h=h1+h2+h3. h1,h2,h3 - функции разного вида, в двух из них yi является переменной. Так вот, решив эту систему линейных уравнений, мы найдем минимум функционала h.

    Всего записей: 162 | Зарегистр. 19-01-2004 | Отправлено: 04:04 23-05-2005
    aquaman1977



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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"..(высота строк остается как на листе-назначении, а не как на листе-источнике..

    Всего записей: 94 | Зарегистр. 11-03-2005 | Отправлено: 09:11 23-05-2005
    ivas



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Для того, чтобы скопировать высоту столбца (ширину строки) надо копировать формат всей строки (столбца).
    Попробуй так:
    ...
    Rows("10:20").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ...

    Всего записей: 3175 | Зарегистр. 23-11-2004 | Отправлено: 11:12 23-05-2005
    aquaman1977



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ага. Получилось!
    Жаль, что данные при этом не копируются..

    Всего записей: 94 | Зарегистр. 11-03-2005 | Отправлено: 14:28 23-05-2005
    ivas



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    aquaman1977
    Так скопируй данные после копирования форматов. Как бы ещё раз заряди копирование, только ячеек.

    Всего записей: 3175 | Зарегистр. 23-11-2004 | Отправлено: 18:48 23-05-2005
    GrayElf

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Linda
    По поводу файлов справки - для создания, нужна специальная программа. Например, в составе Delphi имеется (\Delphi7\Help\Tools\HCW.EXE), но очень неудобная, лучше поискать другие, в них можно разделам справки сопоставлять идентификаторы (topic ID, кажется). Эти же индексы поставить в свойствах HelpContextID элементов управления на форме. В свойствах проекта (меню Tools->VBAProject Properties) поставить имя своего Help-файла. Так должно работать
     
    По поводу решения систем диф. уравнений, почитай по соответствующим методам, схема Рунге-Кутта, схема Адамса, кажется так назывались

    Всего записей: 34 | Зарегистр. 19-04-2005 | Отправлено: 07:18 24-05-2005
    aquaman1977



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ivas
     
    Уже. Точнее - вчера. Это-то я понял.
    Имелось в виду - жаль, что этого нельзя сделать одной операцией..  
    Спасибо за советы!

    Всего записей: 94 | Зарегистр. 11-03-2005 | Отправлено: 09:40 24-05-2005
    ivas



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    aquaman1977
    Сделай макрос на копирование значений и пропиши его в конце макроса копирования форматов.
    ...
    Application.Run ("*.xls!Макрос2")
    ...

    Всего записей: 3175 | Зарегистр. 23-11-2004 | Отправлено: 09:45 24-05-2005
    wtt



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем Привет!
    Объявляю переменную As Single
    Беру значения для этой переменной с листа экселя,например зачение: 5,01
    Заношу значения в массив,сортирую
    Возвращаю на лист и получаю:5,00999927520751
    Что за беда такая,и как с этим бороться?
      Хелп!

    Всего записей: 106 | Зарегистр. 05-02-2004 | Отправлено: 22:56 29-05-2005
    ivas



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wtt

    Цитата:
    например зачение: 5,01
    Это как? ссылка на ячейку или просто цифровое значение?  
    Попробуй функцию ОКРУГЛ(А1;2)

    Всего записей: 3175 | Зарегистр. 23-11-2004 | Отправлено: 23:47 29-05-2005
    wtt



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ivas
    Возвращаю,просто цифровое значение(взял его в массив,обработал(просуммировал),а потом вернул в другую клетку листа
     Получается так,что если пользоваться Single,то цифры пишутся с кучей знаков после запятой.
     Знать бы как с етим бороться...
     За
    Цитата:
    ОКРУГЛ(А1;2)
    спасибо,попробуем.

    Всего записей: 106 | Зарегистр. 05-02-2004 | Отправлено: 20:54 01-06-2005 | Исправлено: wtt, 21:33 02-06-2005
    Linda



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Строю график. Добавляю тренд. Вижу уравнение тренда. Как автоматизировать "считывание" получившегося уравнения в таблицу на рабочем листе? Т.е. чтобы в итоге данные в соответствующих ячейках изменялись автоматически в зависимости от получаемого уравнения тренда.

    Всего записей: 162 | Зарегистр. 19-01-2004 | Отправлено: 17:53 02-06-2005
    wtt



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Linda
    В начале можно считать данные с этого уравнения в память компьютера(создать массив данных),а потом раместить их  в нужном месте,и в нужном порядке.
     Кстати можно поподробнее,что такое "тренд",и как он выглядит на экране,в виде чего...

    Всего записей: 106 | Зарегистр. 05-02-2004 | Отправлено: 21:40 02-06-2005
    ivas



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wtt
    Тренд - это линия, соединяющая контрольные точки изменений или данных (прямая, прочерченная вверх слева направо через последовательно возрастающие точки спадов).
    Пример - показывают динамику котировок курсов валют по телевизору.

    Всего записей: 3175 | Зарегистр. 23-11-2004 | Отправлено: 22:21 02-06-2005
    wtt



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ivas
    Ну понятно,этот самый тренд строится по каким-то числовым значениям(по которым график строится,как я подозреваю),вот с этими значениями работать и надо.
    В экселе есть много возможностей делать таблицы при помощи VBA.
      Worksheets("Лист1").Cells(a, b).Select
     Worksheets("Лист1").Cells(a, b).Value  и т.д. и т.п.
    Linda-вопрос объёмный,сразу не ответить,надо разбить на маленькие части...

    Всего записей: 106 | Зарегистр. 05-02-2004 | Отправлено: 00:22 03-06-2005
    Linda



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Тренд может быть линейным, логарифмическим, полиномиальным и т.д. Подробнее: стоим график по данным столбца; кликаем на графике правой кнопкой мыши - добавить линию тренда; построив тренд мы видим уравнение этого тренда (отображение вида уравнения тренда задается во вкладке "Параметры" при создании тренда). Нужно "считать" (синоним "прочитать") это уравнение в определенную ячейку на рабочем листе.

    Всего записей: 162 | Зарегистр. 19-01-2004 | Отправлено: 02:02 03-06-2005
    GrayElf

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Linda
    Интересный вопрос.
    Вот так срабатывает:
        ActiveSheet.ChartObjects(1).Activate
        ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
        Cells(1, 1) = Selection.Characters.Text

    Всего записей: 34 | Зарегистр. 19-04-2005 | Отправлено: 12:47 03-06-2005
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA
    ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru