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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите ламеру!
    На листе есть диапазон в котором просчитывается сроки проверок, если срок вышел то ячейка с датой напротив фамилии окрашивается в красный цвет (условным форматированием) .
    в столбце B4:B30 идут фамилии а далее даты проверок С4:P30.
     
    Вопрос: Как на VBA выполнить поиск людей у которых вышли проверки скопировать фамилии данных людей и вставить в другой столбец.
     
    Игрался вот с этим но ничего не получается
    Sub Test()
     
    Dim r As Range
     
    Application.FindFormat.Interior.ColorIndex = 3
     
          Set r = Cells.Find(What:="", after:=ActiveCell, SearchFormat:=True)
          If Not r Is Nothing Then r.Copy
     
    Range("J2").Insert
    Range("J2").ClearFormats
    Application.FindFormat.Clear
     
    End Sub
     

    Всего записей: 24 | Зарегистр. 04-12-2005 | Отправлено: 18:02 18-02-2007
    jONES1979



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CEMEH
     
    пожалуйста, http://slil.ru/23951259

    Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 18:59 18-02-2007
    CEMEH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jONES1979
    Попробовал. Дважды щелкаю на дате, вылезает сообщение:
    Could not load an object because it is not available on this machine.
     
    Может у меня офис кривой какой?

    Всего записей: 237 | Зарегистр. 17-09-2006 | Отправлено: 20:00 18-02-2007
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CEMEH
     
    не, просто надо зарегистрировать ole сервер (ActiveX), отвечающий за прорисовку этого календарика. А перед этим, возможно, его скачать.
     

    Всего записей: 17168 | Зарегистр. 14-10-2001 | Отправлено: 20:07 18-02-2007
    CEMEH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    Час от часу не легче.
    Сдается мне, что набить руками по полторы тысячи строк в каждом из двенадцати листов будет много проще.
    Неужели, для такой простейшей задачи нужен такой огромный гемор?
     
    Если бя я знал что такое ole сервер и где его качать....  
     
    пс а вообще календарик какой то есть Вставка - Обьект - календарь. Только что с ним делать х.з.
    Неужели нельзя как во FrontPage - что захотел, то и вставил?
     
    Терпенья нет уже никакого...

    Всего записей: 237 | Зарегистр. 17-09-2006 | Отправлено: 20:30 18-02-2007
    serb78

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите как сделать чтобы процесс выполнения макроса не отображался на экране, а сразу появился только конечный результ, или чтобы полоска бежала, показывая выполнение процесса

    Всего записей: 5 | Зарегистр. 10-02-2007 | Отправлено: 21:21 18-02-2007
    LevT



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

    Цитата:
     пс а вообще календарик какой то есть Вставка - Обьект - календарь.

     
    Ну и как, вставляется нормально? Тогда должен появляться тулбар с кнопочкой "Переключиться в режим конструктора", а дальше правый клик и опции.
     
     
    Добавлено:
     
    А гимор - из-за неполного соответствия активеX, зарегистрированных на машинах разработчика и пользователя. Для снятия гимора существуют инсталляторы, либо стандарты де-факто типа того же календаря (который, кажется, прилагается к офису, но иногда от его установки отказываются).

    Всего записей: 17168 | Зарегистр. 14-10-2001 | Отправлено: 22:24 18-02-2007
    CEMEH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    В правом клике ничего путного нет. А вот если дважды щелкнуть, то откроется окно англицкое(MVB), там наверное, код надо вводить. А какой - мая плакать....
     
     
    о, здорово!!!
    Написал там вот это:
     
    Private Sub Calendar1_Click()
    Cells(5, 3).Value = Calendar1.Object
    End Sub
     
    И все работает, но ТОЛЬКО В ОДНОЙ ЯЧЕЙКЕ.
    Может сделать все раскрывающимся списком? Год известен, месяц то же, только дату менять надо....

    Всего записей: 237 | Зарегистр. 17-09-2006 | Отправлено: 23:20 18-02-2007 | Исправлено: CEMEH, 23:33 18-02-2007
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Маладца. Теперь гугль, ищи инструкцию по программированию элемента управления календарь.
     
    А по правому клику есть "свойства" - настраивать вид этого календаря, там же кое-какая справка.
     
     
     
    Добавлено:
     
    Еще не забудь, что можно не только на листе играть с календариком, но и в юзерформу его запихнуть.

    Всего записей: 17168 | Зарегистр. 14-10-2001 | Отправлено: 23:47 18-02-2007 | Исправлено: LevT, 00:12 19-02-2007
    jONES1979



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CEMEH
    Это стандартный "календарь" из пакета MS Office. Когда офис ставишь в режиме выборочно, он живет в разделе аксесса. Я потому его и взял, что он в комплекте идет с офисом и качать не надо....
     
    убедись, что у тебя есть файлик %SystemRoot%\SYSTEM32\mscomct2.ocx
     
     
    LevT

    Цитата:
    Еще не забудь, что можно не только на листе играть с календариком, но и в юзерформу его запихнуть

     
    ну дак я так и сделал

    Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 01:41 19-02-2007
    aks_sv

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

    Цитата:
    подскажите как сделать чтобы процесс выполнения макроса не отображался на экране, а сразу появился только конечный результ, или чтобы полоска бежала, показывая выполнение процесса  

     
     Application.ScreenUpdating = False

    Всего записей: 109 | Зарегистр. 18-12-2006 | Отправлено: 09:33 19-02-2007
    kandi



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Оставил вопрос еще 12-02-2007. Прождал неделю. Неужели такая сложная задача, что никто не может помочь?
    Прошу прощения за назойливость и повторяю вопрос еще раз:

    Цитата:
    На листе Excel расположено N-ое количество однотипных табличек с данными. Возле каждой из них находится управляющий элемент - ActiveX command button, по нажатию на который происходит обработка данных соответствующей таблички, строится отчет и выводится на принтер. Задача в том, чтобы каким-то образом определить до обработки данных и построения отчета КАКОЙ именно ActiveX command button был нажат, т.е. либо в переменной, либо в произвольной ячейке получить уникальный идентификатор нажатой кнопки.

    Всего записей: 38 | Зарегистр. 27-12-2003 | Отправлено: 10:28 19-02-2007
    The okk



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kandi
    Просто не ясна суть вопроса - при нажатии на кнопку вызывается назначенный ей макрос. Т.е. определять что-либо, по сути, не нужно.
     
    З.Ы.: Народ, как называется функция минимума в ВБА?

    Всего записей: 327 | Зарегистр. 16-11-2006 | Отправлено: 13:34 19-02-2007
    aar



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

    Цитата:
    З.Ы.: Народ, как называется функция минимума в ВБА?

    http://www.visualbasic.happycodings.com/Applications-VBA/code8.html
     
    Functions for calculating the Min, Max and StdDev
     
    Добавлено:
    (c) Google

    ----------
    * * *

    Всего записей: 7080 | Зарегистр. 20-11-2003 | Отправлено: 14:06 19-02-2007
    The okk



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    aar
    Спасибо, но функцию минимума-максимума написать я могу самостоятельно написать на любом языке.
    Думаю, в случае Excel быстрее уложить массив на лист и найти через WroksheetFunction максимум и минимум.
    Я спрашивал про "родной" метод VBA. А то даже включив показ скрытых мемберов, не нашел в object browser ничего похожего.

    Всего записей: 327 | Зарегистр. 16-11-2006 | Отправлено: 14:14 19-02-2007 | Исправлено: The okk, 14:22 19-02-2007
    aar



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    The okk
    http://www.google.ru/search?q=min+vba+function
    http://www.avdf.com/apr98/art_ot003.html

    Цитата:
    VBA doesn't have a Max or Min function


    ----------
    * * *

    Всего записей: 7080 | Зарегистр. 20-11-2003 | Отправлено: 14:26 19-02-2007
    kandi



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

    Всего записей: 38 | Зарегистр. 27-12-2003 | Отправлено: 23:30 19-02-2007
    RMKusto



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!  
     
    Кто может помочь решить такую задачку:
     
    Существует база в экселе в одном файле...
     
    Пример:  
    Дата           Номер           Категория    и ещё полей 5-6
     
    1.02.06          44                 Фото           ...
    1.02.06          44                 Текст          ...
    2.02.06          45                 Фото           ...  
    2.02.06          45                 Текст          ...
     
     
     
    Нужно в другом файле сделать отчёт. По например первому числу и только фото и нужные поля, и второй отчёт по первому числу и только тексту с нужными полями.  
     
    Вопрос:
     
    1) Какой коммандой открыть другой файл?
    2) Какой коммандой Сделать поиск по базе с учётом даты/номера  и категории.  
    3) Какой коммандой Скопировать нужные поля по отношению к запросу и вставить в нужную строку отчёта.  
    4) Когда все поля где сходится дата/номер и нужная категория скопированы, какой коммандой прекратить операцию.
    5) Какой коммандой сохранить резултатты отчёта в новом файле, и назвать его по номеру и категории: например 44foto, 44tekst. Сам файлик отчёта оставить пустым, чтобы можно было и далее одной кнопкой делать нужный отчёт.  
     
    Прошу прощения, если эти вопросы уже обсуждались.  
     

    Всего записей: 64 | Зарегистр. 15-05-2002 | Отправлено: 12:00 20-02-2007
    dunamis

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

    Всего записей: 5 | Зарегистр. 31-01-2007 | Отправлено: 13:03 20-02-2007
    gince

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zdrastvuite.
    Neobizaites za latinskie bukvy.
      V UserForms1 naxoditsia tri OptionButton(1-3). Pri otkrytii Excel vypolniaetsia UserForm1.Show.  
    Vapros takoi:
    -   nado cto aktivnym vsegda byl Sheet1, kak vkliucion OptionButton1 ili inace vkliucalsia OptionButton1.
    -  pri vkliucenii OptionButton2 dolzen pod UserForn1 otkrytsia Sheet2 i stat aktivnym
    -  pri vkliucenii OptionButton3 dolzen pod UserForn1 otkrytsia Sheet3 i stat aktivnym
    -  i kuda eto vsio polozit ( otdelnyi modul, workbook, userform)

    Всего записей: 2 | Зарегистр. 19-02-2007 | Отправлено: 17:10 20-02-2007
       

    Страницы: 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