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

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



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

    Всего записей: 2617 | Зарегистр. 13-02-2003 | Отправлено: 23:51 08-07-2005
    wtt



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В это форуме тоже спрошу:
    Кто нить даст качнуть русскую справку на VBA, или ссылку на неё (имеется в виду офис 97)?
     Заранее пасибо.

    Всего записей: 106 | Зарегистр. 05-02-2004 | Отправлено: 22:30 19-07-2005
    Asylum

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wtt
    Могу дать ссылку на "Уокенбах Джон Профессиональное программирование на VBA в Excel 2002".  
    Только она отсканенная и весит 127 М.
    Грузи здесь

    Всего записей: 195 | Зарегистр. 23-01-2004 | Отправлено: 23:35 19-07-2005
    vworld



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wtt
    Постараюсь дома посмотреть...я скачивал не так довно "VBA для чайников" там в pdf примерно 5М вроде как...
    4ALL
    Можно ли например так сделать, есть у меня прайс в *.xls и есть прайс  спустя например пару недель...мне надо эти файлы сравнить и в новом чтобы была подсветка, что изменилось за это время?

    Всего записей: 2617 | Зарегистр. 13-02-2003 | Отправлено: 08:11 20-07-2005
    UserOKA

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно организовать просмотр, редактирование, добавление записей таблицы Access из Excel. Меня интересует вопрос интерфейса. Грустно делать тучу Edit-ов на форме для просмотра БД. Может есть что-то типа сетки, можно ссылку где ее можно скачать и как ее потом прицепить. Если нет такого, то может быть у кого-нибудь примерчики есть как это реализовано - поделитесь.

    Всего записей: 149 | Зарегистр. 01-10-2003 | Отправлено: 08:21 20-07-2005
    saintvadim



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Две книги, довольно полезные по VBA:
     
    Sybex - Mastering Excel 2003 Programming with VBA.
    Wrox Press - Excel 2003 VBA Programmer's Reference
     
    Забрать здесь: http://mtg.ur.ru/gallery/books/

    Всего записей: 11 | Зарегистр. 02-06-2005 | Отправлено: 15:17 25-07-2005
    ghosty



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите, пожалуйста, написать простенькую функцию. Нужно, чтобы она выводила определенный диапазон ячеек с текстовыми значениями (как правило, прерывистый) в виде списка через запятую.  
    Нашел вот что:  
      Public Function MultiCat( _
            ByRef rRng As Excel.Range, _
            Optional ByVal sDelim As String = ", ") _
                 As String
         Dim rCell As Range
         For Each rCell In rRng
             MultiCat = MultiCat & sDelim & rCell.Text
         Next rCell
         MultiCat = Mid(MultiCat, Len(sDelim) + 1)
      End Function
       
    Но пока эта функция не переваривает прерывающиеся диапазоны. Т.е в случае (A1:B2) работает, а в случае (A1;B2) - нет    
    Срочно нужна помощь!

    ----------
    пропадет-растает

    Всего записей: 6808 | Зарегистр. 21-09-2002 | Отправлено: 17:47 26-07-2005 | Исправлено: ghosty, 19:18 26-07-2005
    distance

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня совсем простые вопросы - только начал пиcать на VBA
    1. если у меня есть функция, описанная в одном модуле, то как мне её вызвать из другого модуля? То же самое относится к константам - не видны-с...
    2. как сделать, чтобы моя функция вызывалась при открытии документа?

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 19:51 26-07-2005
    GrayElf

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ghosty
    Все из-за опционального параметра sDelim
    Использовать функцию надо так:  
    =multicat((A1:A2;A3;A4))

    Всего записей: 34 | Зарегистр. 19-04-2005 | Отправлено: 08:29 27-07-2005
    saintvadim



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как в VBA предусмотрен перенос программного кода из одного Excel-файла в другой?

    Всего записей: 11 | Зарегистр. 02-06-2005 | Отправлено: 09:38 27-07-2005
    GrayElf

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

    Цитата:
    1. если у меня есть функция, описанная в одном модуле, то как мне её вызвать из другого модуля? То же самое относится к константам - не видны-с...  

    Перед объявлением ставь Public, т. е. Public Sub qwerty()

    Цитата:
    2. как сделать, чтобы моя функция вызывалась при открытии документа?

    функцию надо назвать auto_open и все
     
    saintvadim
    Посмотри код какого-нибудь вируса, они как раз этим и занимаются

    Всего записей: 34 | Зарегистр. 19-04-2005 | Отправлено: 12:48 27-07-2005
    saintvadim



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Допустим, у меня есть тестовый Excel-файл, в котором я пишу весь код. Где-то далеко есть другой Excel-файл (без макросов), в который мне надо встроить разработанную программу.
    Как я понял, в VBA есть возможность импорта/экспорта модулей, форм и так далее. Как этим пользоваться?

    Всего записей: 11 | Зарегистр. 02-06-2005 | Отправлено: 13:40 27-07-2005
    Sleepwalker



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    saintvadim
    В тестовом жмешь правой кнопкой на модуле, делаешь ему экспорт. Потом открываешь приемник, заходишь в редактор VB и там в модулях делаешь импорт сохраненного.

    Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 14:46 27-07-2005
    saintvadim



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sleepwalker
    Спасибо за ответ.
    С экспортом/импортом форм, кажется, всё нормально, однако при экспорте Листа1 предлагается сохранить файл типа Class Files (*.cls), после импорта в другой файл в Project Explorer сохранённый модуль отображается в папке Class Modules, а Лист1 этого файла остаётся чистым. Макрос не работает.

    Всего записей: 11 | Зарегистр. 02-06-2005 | Отправлено: 15:27 28-07-2005 | Исправлено: saintvadim, 15:29 28-07-2005
    igbt

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как проверить запущен указанный EXE или нет и сказать об этом макросу VBA?
    Очень надо !!!

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igbt
    В VB6 я использовал обращения к API функциям. Попробуй, может удасться сделать также в VBA. Функция CheckWindow принимает заголовок окна и возвращает boolean значение. Перед вызовом инициализируй TargetHwnd.
    Подробнее...

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:11 29-07-2005 | Исправлено: dneprcomp, 01:26 09-08-2005
    Sleepwalker



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    saintvadim
    понятен фиг не работает... но ты про листы не спрашивал. Т.е. тебе еще надо и лист твой вставить в проект? Я думаю, лист из файла xls можно подгрузить, правда код предоставить не могу.

    Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 23:44 29-07-2005
    epsilon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wtt
    vworld
    _http://dfni.dp.ua/books/load.php?ty=vb
    там антилич стоит, прямую ссылку на книгу дать не могу

    Всего записей: 72 | Зарегистр. 25-02-2003 | Отправлено: 19:49 30-07-2005 | Исправлено: epsilon, 19:50 30-07-2005
    king_krimson



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите  плиз  срочно госпада???!!!!!
     
    1
    есть  вот  такая  формула - переменная sum = количеству элементов в столбце.  теоретически  должно все работать -  но  хоть  тресни  нифига  -   в  результате  в  ячейке  где  вбита  формула пишется  что  "ошибка недопустимое имя"и в самой  ячейке (#ИМЯ?) - если  кликнуть  дважды  по  ячейке  - все исправляется и  значение  пересчитывается !!
    Range("J" & CStr(sum + 5)).Formula = "=СУММ(J6:J" & CStr(sum + 3) & ")"
    2
     
    как  скрыть  книгу  целиком  - чтобы  не маячила  когда  ставлю  макрос на  автозапуск  с Excel ?

    ----------
    Компьютерная помощь для вашего PC Санкт-петербурге : для тех кто с Ru.Board - дешевле. UIN 320008827
    http://WWW.PCF1.RU

    Всего записей: 514 | Зарегистр. 04-03-2003 | Отправлено: 00:18 02-08-2005 | Исправлено: king_krimson, 00:19 02-08-2005
    igbt

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp
    Спасибо.
    Но VBA под Excel постоянно навязывает работу с окнами Excel и как ему щелкнуть по носу и заставить работать с окнами других приложений, а еще и получать от них данные - для меня вопрос? Может я чего-то не понял :о)). Но вопрос остался открытым:
    Как проверить запущен указанный EXE или нет и сказать об этом макросу VBA?

    Всего записей: 51 | Зарегистр. 17-02-2005 | Отправлено: 16:43 02-08-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