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

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

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

    Цитата:
    Office Developer Edition  

    http://forum.ru-board.com/topic.cgi?forum=35&topic=8090&start=20#lt

    Всего записей: 1271 | Зарегистр. 26-12-2002 | Отправлено: 17:16 19-10-2005
    Michael23

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!  
    Подключился к базе MS SQL 2000 из Excel (VBA, через ADO)  для экспорта данных  
    Необходимо получить свойство поля - может ли значения этого поля (Field) принимать Null (когда создаешь поле с помощью SQL, необходимо задать могут ли значения быть Null, а как это в программе проверить)???? (НЕ проверка на NULL значения поля таблицы)  
    Тип и длинну поля получил, а вот эту проблему не могу решить, может кто знает.

    Всего записей: 84 | Зарегистр. 09-10-2001 | Отправлено: 13:45 20-10-2005 | Исправлено: Michael23, 17:49 20-10-2005
    Nimnul



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Olive77
    Спасибо. Но там ссылки с рапидшары, а они вроде долго не живут...
    Не получится скачать на модеме Хотя попробовать можно...

    Всего записей: 1072 | Зарегистр. 05-02-2003 | Отправлено: 10:54 23-10-2005
    Neoromantic



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Очень тупой вопрос. Объясню на простом примере что нужно:
    Есть две ячейки, в третью нужно записать их сумму автоматически. Т.е. сначала там будет написано что-то вроде "введите данные", а после ввода сумма сразу появится. С помощью кнопки такое уже сделал, нужно что бы работало постоянно, так сказать. Ввел данные и посчиталось...
    Как???
     
    Добавлено:
    Сделал через Worksheet_Change(ByVal Target As Range)
    Может есть более красивый вариант?

    Всего записей: 1275 | Зарегистр. 15-01-2004 | Отправлено: 17:16 10-11-2005
    Troitsky



    Водник Водкин
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Так а встроенные функции нельзя чтоли использовать?
     
    Например что то в таком роде:
    Код:
    =ЕСЛИ(ИЛИ(ЕЧИСЛО(A1);ЕЧИСЛО(B1));СУММ(A1;B1);"введите даные")

     
    PS: адаптировать можно как угодно
     
    Ну а если макросом все же нужно, то лучше, вероятно, использовать событие листа Worksheet_Change

    ----------
    Мы в хорошем настроении гуляем по лесам.
    Кто обидеть нас захочет – сам получит по усам.
    Сам полу- получит по усам. Сам полу- получит по усам!

    Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 19:53 10-11-2005
    Morlok

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня вопрос
    В папке XLStart сидит файлик с макросами называется допустим makros.xls.
    Я прописываю в свойствах excel открывать все файлы из расшареной папки и надо чтобы там лежал такой же файл makros.xls, причем, если он есть в XLStart то второй раз не пытался открыться, а если нет то открывался из общей папки.  
     
    Если ничего не менять то в принципе так и есть, только Excel ругается , что не может открыть два файла с одинаковым именем. Можно ли это сообщение отключить

    Всего записей: 20 | Зарегистр. 21-10-2003 | Отправлено: 13:24 15-11-2005
    TWanderer

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня похожая поблема как у  Morlok.
    Необходимо знать есть ли в файле определенная страница, если нет создать.
    Как то сталкивался с простым решением, сейчас не могу найти.
     
     

    Всего записей: 6 | Зарегистр. 14-11-2005 | Отправлено: 16:04 15-11-2005
    Morlok

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

    Всего записей: 20 | Зарегистр. 21-10-2003 | Отправлено: 17:34 15-11-2005
    TWanderer

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Morlok
    Если на то пошло файлы в папке тоже можно перебрать.

    Всего записей: 6 | Зарегистр. 14-11-2005 | Отправлено: 18:05 15-11-2005
    TWanderer

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имеется несколько похожих UserForm.  
    Как передать ссылку на текущуу форму для обработки в процедуре.  





    Имитацию подписи убери, запрещено правилами ру-борда.

    Всего записей: 6 | Зарегистр. 14-11-2005 | Отправлено: 10:43 17-11-2005 | Исправлено: ShIvADeSt, 01:45 15-12-2005
    Morlok

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TWanderer
       
      Конечно можно перебрать но, все дело в том что макросы начинают работать только после того как открыты все книги, которые открываются по умолчанию, соответственно такая проверка возможна только после того как Excel попытается открыть две книги с одинаковыми именами.  
      Еще как вариант можно открыть книги с макросами из XLStart потом уже перебирать папку на наличие еще не открытой книги и если такая есть открывать ее, но это как то пошло по моему да и скорей всего будет долго.

    Всего записей: 20 | Зарегистр. 21-10-2003 | Отправлено: 11:35 17-11-2005
    MrZeRo



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TWanderer
    Есть такая переменная Me.
    Может, она подойдет? Только не уверен, это ссылка на лист или на форму.

    ----------
    ... не это главное ...

    Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 12:47 17-11-2005
    dartvaider



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите плиз! Можно ли через VBA  запустить сmd команду и выполнить её?
    Если можно то как?Очень нужно!

    Всего записей: 534 | Зарегистр. 31-08-2005 | Отправлено: 10:16 18-11-2005
    Vodomer



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

    Цитата:
    Sub RunCharMap()
    On Error Resume Next
    Program = “Charmap.exe”
    TaskID = Shell(Program, 1)
    If Err <> 0 Then
    MsgBox “Cannot start “ & Program, vbCritical, “Error”
    End If
    End Sub
     

    как видно кроме charmap можно запускать что нужно
    книга john wiley & sons - excel 2002 power programming with vba.pdf

    Всего записей: 319 | Зарегистр. 01-05-2003 | Отправлено: 11:45 18-11-2005 | Исправлено: Vodomer, 11:45 18-11-2005
    aquaman77



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

    Цитата:
    Код:.ActiveChart.SetSourceData Source:=.Worksheets(s).Range(.Worksheets(s).Cells(1, 1), .Worksheets(s).Cells(k + 1, Num_Col + 1)), _  
                PlotBy:=xlColumns  

     
    ничего себе! а чего же все так запутано-то?
    спасибо, попробую.

    Всего записей: 8 | Зарегистр. 18-11-2005 | Отправлено: 19:10 18-11-2005
    TWanderer

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Новая проблема
    При добавлении строк "ListBox" при помощи ListBox1.AddItem компьютер тормозит  
    Добавление выполняется в цикле добавляю около 200 строк.
    Есть ли этому альтернатива.
    Проблема не большая, но все таки...
     
    С уважением,
    Владимир





    Имитацию подписи убери, запрещено правилами ру-борда.

    Всего записей: 6 | Зарегистр. 14-11-2005 | Отправлено: 18:54 24-11-2005 | Исправлено: ShIvADeSt, 01:45 15-12-2005
    psihodelic



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужна ваша помощь! Срочно! Вопрос довольно интересный.  
     
    Перенос даных из MySql в Excel
     
    Ситуация: Существует база даных в MySQL, заказчику необходимо видеть определенную информацию из базы в экселевском документе.
     
    Планирую: В экселе создать кнопку, с прикрученым макросом, который через OLE (если это возможно) связывается с MySql и посредством запросов, получает и вставляет в документ данные.
     
    Проблема в том, что с технологией OLE знаком лишь в теории, видел как это делают, а сам не занимался не разу.
     
    Подскажите насколько осуществимо задуманное и помогите примером или ссылкой!!!

    Всего записей: 53 | Зарегистр. 20-01-2005 | Отправлено: 20:00 24-11-2005
    AlexER



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Что прочесть на эту тему и где взять, чтобы понять, как грамотно пользовать VBA под Exel?  
    Возможно справочник по VBA в Exel... ?

    Всего записей: 2 | Зарегистр. 14-12-2005 | Отправлено: 09:49 14-12-2005
    SlavikP



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть в Excel табличка с двумя листами - в одном некие данные, в другом т.н.
    "сводная таблица" (pivot table) по этим данным.
    Данные в первом листе преиодически изменяются (в основном кол-во записей)
    После каждого изменения приходится лезть в свойства итоговой таблицы и менять диапазон и на актуальный.
    Хотелось бы пример скрипта на VB, который можно привязать к кнопке для изменения диаразона значений для сводной таблицы.
    Примечание: таблица данных начинается всегда со строки 2 и заканчивается пустыми строками. Внутри таблицы пустых строк нет.

    Всего записей: 33 | Зарегистр. 11-02-2004 | Отправлено: 11:28 14-12-2005
    jrd32



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помагите!  
    Надо написатьscript каторый будет запускать через кнопку в EXEL текстовый документ, каторый в себе содержит = допустем:  
    00.  
    01.qwertyuiopasdfghEXEL00jklzxcvbnm  
    02.qwertyuiopasdfghEXEL01jklzxcvbnm  
    03.qwertyuiopasdfghEXEL02jklzxcvbnm  
    04.  
    05.qwertyuiopasdfghEXEL03jklzxcvbnm  
    06.qwertyuiopasdfghEXEL04jklzxcvbnm  
    07.qwertyuiopasdfghEXEL05jklzxcvbnm  
    08.  
    09.  
    10.  
    11.qwertyuiopasdfghEXEL06jklzxcvbnm  
    12.qwertyuiopasdfghEXEL07jklzxcvbnm  
    13.qwertyuiopasdfghEXEL08jklzxcvbnm  
    14.qwertyuiopasdfghEXEL09jklzxcvbnm  
    15.qwertyuiopasdfghEXEL10jklzxcvbnm  
    16.qwertyuiopasdfghEXEL11jklzxcvbnm  
     
    Вот это всё надо через VB - од страки 19 до 25 "EXEL00" ввести в лист (list1) exel под
    сабои так чтоб небыли пустые пространства как строки 00. ;08.; итд.....  
    вот так:
     
    EXEL00
    EXEL01
    EXEL02
    EXEL03
    EXEL04
    EXEL05
    EXEL06
    EXEL07
    EXEL08
    EXEL09
    EXEL10
    EXEL11
     
    (на каждую строку)
     
    Потом кокда выйдет токая строница (лист1) с такими данными то надо из этого сделать Диограму в 2D.  
    Спасибо за рание.
     
    Добавлено:
    Вот почему неработает вот ето?
     
     
    Private Sub CommandButton1_Click()
     
    psc$ = "c:\exel\aaa.txt"
    nachnet% = 120
    dlina% = 5
    psch$ = Mid(psc$, nachnet%, dlina%)
     
     
    End Sub
     
     
    Добавлено:
    а пониал

    Всего записей: 7 | Зарегистр. 22-12-2005 | Отправлено: 23:38 10-01-2006 | Исправлено: ShIvADeSt, 02:06 11-01-2006
       

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