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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    igbt

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто-нибудь знает как поменять в екселе на  title bar надпись "microsoft excel ...." на свою.

    Всего записей: 51 | Зарегистр. 17-02-2005 | Отправлено: 16:52 22-04-2005
    miga

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно так:
    Application.Caption = "свою"

    Всего записей: 22 | Зарегистр. 08-10-2003 | Отправлено: 02:17 24-04-2005
    igbt

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

    Всего записей: 51 | Зарегистр. 17-02-2005 | Отправлено: 13:23 29-04-2005
    H0UsE

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста написать сдедующее задание.
    Мне дали задание, написать небольшую программу на VBA + Excel.
    Нужно организовать ввод данных на рабочий лист "экзамен" в 4 колонки: Группа, Предмет, ФИО, оценка.
     
    Иными словами, нужно чтобы при открывании Excel-файла в нем открывалась форма, в которой было 4 поля. Когда поля заполнены, пользователь нажимает кнопку ввод, и потом эти поля добавлялись в ячейки Excel.
     
    К сожалению на данном форуме нельзя прикрепить картинку, ноглядно показывающую постановку задачи, поэтому ниже располагается ссылка на эту картинку  - http://zb-susu.ru/~house/files/problem.jpg
     
    Прошу помощи

    Всего записей: 3 | Зарегистр. 08-05-2005 | Отправлено: 09:04 09-05-2005
    Agent_Smith



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Многоуважаемые, помогите, пожалуйста, в решении следующей задачки:
     
    есть книга Excell, в которой - макросы, формы, все дела... Юзер с ней работает, и эта книга (назовём её Книга1) генерит новый файл (назовём его Книга-2) с данными на 2-х листах.
    Требуется, чтобы помимо данных, в Книгу-2 добавлялся макрос. Как это можно сделать?
     
    Если задача кажется извращённой, опишу требуемый результат - нужно, чтобы в Книге-2 один лист был доступен всем, а второй лист требовал ввода пароля для открытия.
     
    Очень нужна помощь!
    С уважением.

    Всего записей: 179 | Зарегистр. 02-01-2003 | Отправлено: 16:40 11-05-2005
    Agent_Smith



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Жаль, что все отмолчались; решение нашёл сам.
    Может быть, вопрос и банальный, но тем не менее (для будущих поколений) - история "как это сделать":
     
    1. Подключаем через Tools -> References библиотеку Microsoft Visual Basic for Applications Extensibility.
    2. Добавляем в файл модуль:
    Код:
    Application.Workbooks(Workbooks.Count).VBProject.VBComponents.Add (vbext_ct_StdModule)

    3. Выцепляем индекс добавленного модуля:

    Код:
    i = Application.Workbooks(Workbooks.Count).VBProject.VBComponents.Count

    3. Дописываем в добавленный модуль что попало:

    Код:
    Application.Workbooks(Workbooks.Count).VBProject.VBComponents.Item(i).CodeModule.InsertLines NomerStroki, "Собснно Сама строка в модуле"


    Всего записей: 179 | Зарегистр. 02-01-2003 | Отправлено: 13:01 12-05-2005 | Исправлено: Agent_Smith, 13:02 12-05-2005
    Linda



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как в Excel создать форму интерфейса, на которую прицепить потом кнопки? Речь идет о дружественном интерфейсе для пользователя.

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Linda
    Меню Сервис -> Макрос -> Редактор Visual Basic, там Insert -> UserForm и рисуй себе дружественный интерфейс.

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



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

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



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

    Цитата:
    при копировании исходная высота строк не сохраняется.

    Форматы копируются. Или ты переносишь только значения, без форматов?

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GrayElf, спасибо за подсказку по интерфейсу.
     
    Подскажите, как быть:  
     
    1. закрыть форму UserForm1.RunAutoMacros xlAutoClose - не работает. Какую тогда процедуру нужно написать, чтобы прицепить закрытие формы к кнопке (она на самой форме, типа "ОК")?
     
    2. как известно, можно сделать кнопку Help (в правом верхнем углу формы, рядом с кнопкой закрытия формы, на нем картинка "?"). Где на нее текст Helpа писать?
     
    3. не могу никак найти, где в свойствах формы установить кнопку (как у обычной формы) "свернуть"?
     
    4. как решить систему уравнений частных производных в Excel? Может кто интересовался и подскажет. Думаю, что есть встроенная функция (не могу найти), или может кто ссылку даст на решение в Excel.

    Всего записей: 162 | Зарегистр. 19-01-2004 | Отправлено: 01:56 21-05-2005 | Исправлено: Linda, 03:15 21-05-2005
    evle



    1 + int rand(100);
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Linda
    06:56 21-05-2005
    Цитата:
    закрыть форму  

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

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

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

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

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Linda
    1. by evle. Так и есть.
    2-3. Разве? Только отдельными кнопками. Например, написАть help в "Label" на открываемую-скрываемую форму (можешь поиграть цветом формы-текста). И, потом, куда свернуть? В панель задач ОС?
    4. К сожалению.

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



    1 + int rand(100);
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ivas
    По поводу help'а все не так очевидно. Похоже, что можно как-то цеплять внешний файл и к нему привязывать элементы управления, но подробности пока не знаю.

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

    Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 10:01 21-05-2005
    ivas



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    evle
    Внешний файл подцепить можно, например .txt, но это не всегда хорошо и удобно. Мало ли какая программа привязана на открытие по умолчанию... Думаю, что если help небольшой и без больших (большого количества картинок) - то лучше в открываемой форме. Или на отдельном листе, который тоже можно скрыть-показать.

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



    1 + int rand(100);
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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
    Я ответил на вопрос?


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

    Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 11:49 21-05-2005
    ivas



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

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

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

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



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

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

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

     
     
    Добавлено:
    2. http://www25.brinkster.com/msvbasic/default.asp?p=helpinvb&s=vb

    Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 18:30 21-05-2005
    Linda



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

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

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

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

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

    Всего записей: 162 | Зарегистр. 19-01-2004 | Отправлено: 22:14 21-05-2005
    ivas



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

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

    Но это подпрограмма Excel, а не ОС. Ты же не сможешт свернуть лист в панель задач. Так же и userform.

    Всего записей: 3175 | Зарегистр. 23-11-2004 | Отправлено: 23:32 21-05-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