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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    надеюсь, что мне тут смогут помочь .. (

    Всего записей: 6 | Зарегистр. 08-06-2006 | Отправлено: 13:41 08-06-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Forever43
    Для начала неплохо было бы знать в чем.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 20:21 08-06-2006
    Forever43

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Итак .. я обычный студент, время подпирает уже так, что отступать некуда ... Моя задача заключается лишь в том, чтобы зная 2 параметра, посчитать 5 значений ... VBA изучаю первые сутки .. сдавать уже надо ... сижу парюсь .. по частям пробовал, вроде работало .. как начал что-то целиком делать, так начались траблы .. я приведу все 5 формул, которые надо вычислить и 2 вводимых параметра. Если кому не влом, помогиТЕ !
     
    Вводятся параметры с, р (0<p<1). Я их даже в переменные записать не могу из формы .. совсем кодить разучился за 2 года ...
    И по ним вычисляются следующие выражения:
     
    ql = (3 * p - 2) * (3 * p - 2) / (4 * p * p * c * c)
    qh = 9 / (4 * (1 - p) * (1 - p))
    tl = (3 * p - 2) / 2 * p * c
    th = 4.5 / (1 - p) - (3 * p - 2) / (p * c)
    u = (3 * p - 2) / (p * c)
     
    Всего лишь и требуется, на форме сделать 2 поля для ввода параметров с и р, и кнопочку "Посчитать", после нажатия на которую будут выводиться результаты .. на этой ли форме внизу, может в другом окне .. всё равно .. спасите лоботряса .. я исправлюсь, честно ( А я не слишком много прошу ?)

    Всего записей: 6 | Зарегистр. 08-06-2006 | Отправлено: 23:40 08-06-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Forever43
    Well, ok.
    Вот тебе файл быстренько сляпал. На нем можешь основываться.
    http://www.mytempdir.com/725704
     

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 00:41 09-06-2006
    Forever43

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Огромное спасибо. Быстро сделано. Щас пойду копаться дальше в этом )) Сразу видно, дело знаешь ...

    Всего записей: 6 | Зарегистр. 08-06-2006 | Отправлено: 01:00 09-06-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Forever43
    Немного косметики:
    Текстбоксы результата сейчас нельзя выделить и скопировать. Измени их свойства Enabled и Locked на True.  

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 01:26 09-06-2006
    theIggs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, есть ли возможность программно отформатировать часть ячейки? Задача такая: нужен макрос, чтобы одним нажатием кнопки выделенный текст преобразовался в верхний/нижний индекс (нужны квадратные метры). Смотрел справку VBA, свойство Selection действует сразу на всю ячейку.

    Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 05:05 09-06-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    theIggs
    Мощная вещь (иногда ) - Record New Macro:

    Код:
        With ActiveCell.Characters(Start:=9, Length:=6).Font
            .Name = "Arial"
            .FontStyle = "Bold"
            .Size = 10
            .Strikethrough = False
            .Superscript = True
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With


    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 05:34 09-06-2006
    theIggs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk
    Согласен на 100%!
    Единственная проблема: числа Start = 9 и Length = 6 здесь жёстко вбиты. Как бы мне теперь сделать, чтобы я мог с одинаковым успехом выделить мышкой двойку у м2 и в случае 10 м2, и в случае 1000000 м2?
    Superscript = True для последней цифры не предлагать. Интересует именно возможность работы с выделенным куском текста.

    Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 15:37 09-06-2006
    Troitsky



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

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

    Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 17:30 09-06-2006 | Исправлено: Troitsky, 17:35 09-06-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    theIggs
    Это проблема, согласен. В Экселе нет кнопок для этого, а макросы все отключаются при редактировании ячейки. Вот несколько решений, которые удалось найти (по-английски):
    http://exceltips.vitalnews.com/Pages/T0080_Creating_Superscript_and_Subscript_Buttons.html
    http://j-walk.com/ss/excel/files/supersub.htm
    Основаны на использовании UserForm, заменяющей редактирование ячейки. Вариант далеко не идеальный.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 19:27 09-06-2006
    theIggs



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да уж, какой тут идеальный вариант, если минимальный элемент, с которым можно работать в Excel - ячейка... Спасибо и за эти ссылки, сейчас почерпну оттуда чего-нибудь и сделаю для себя хотя бы некий промежуточный вариант!

    Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 20:02 09-06-2006
    Forever43

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk, если ещё помнишь моё прошлое сообщение, то у меня возник ещё вопрос ... теперь мне надо записывать результаты по соответствующим ячейкам, чтобы это всё отображалось на листе Exel ... и при этом, пользователь может вводить значения параметров несколько раз, получая для каждой пары свой набор значений, который будет записываться строчкой ниже .. помоги плиз, либо объясни, как вообще в ячейку с определённыйм менем записать значение какого-либо текстбокса. Заранее спасибо.
     
    Добавлено:
    и ещё вопрос на засыпку .. где указывется количество значов после запятой при выводе дробного результата, чтобы текстбокс отображал значение не 5.1020408163265E-03, а к примеру 5.1, или 5.102 ...

    Всего записей: 6 | Зарегистр. 08-06-2006 | Отправлено: 17:07 11-06-2006
    Yuk



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

    Код:
    Sheets("Sheet1").Cells(1,1).Value=textbox1.Value
    поместит величину из текстбокса textbox1 в ячейку А1. В Cells можно ввести переменные для изменения номера строки или столбца, типа Cells(row,col), и изменять их в цикле.  
     

    Цитата:
    где указывется количество значов после запятой

    Код:
    tb_ql.Value = Format((3 * p - 2) * (3 * p - 2) / (4 * p * p * c * c), "0.00")
    и т.д.
     

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 18:39 12-06-2006
    Varroa



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как передать координаты точки по щелчку мыши из Adobe Photoshop например в Excel.

    Всего записей: 53 | Зарегистр. 18-03-2005 | Отправлено: 21:11 12-06-2006
    Forever43

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Такс, ясненько ... спасибо, только до меня так и не допёрло, как цикл сделать ...
     
    Добавлено:
    И подскажи плиз, как исходный лист Exel очищать, чтобы при каждом запуске все ячейки пустыми были ?

    Всего записей: 6 | Зарегистр. 08-06-2006 | Отправлено: 00:51 13-06-2006
    Forever43

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всё, проблема разрешилась. Теперь приступаю ко второй задаче. О решении проблем буду интересоваться опять же тут.

    Всего записей: 6 | Зарегистр. 08-06-2006 | Отправлено: 16:21 13-06-2006
    Anatolij2005

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Знатоки подскажите пожалуйста.
    Есть значения в столбце C и есть значения в столбце G причем значения в столбце С номер строки например n= 3 а в G q=15   .Вообщем нужно сравнить значения в столбцах и если значение в столбце С равно значению в столбце G то вырезать и вставить значение со столбца G c положения q в  положение n.
    Код пробовал писать но чего то не получается опыта маловато.если нужно вышлю свой код.

    Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 12:23 15-06-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Anatolij2005
    Мда, тяжело понять, особенно когда на лицо проблемы с пунктуацией.
    Пример можно? Типа кусочек листа со столбцами C и G. Если есть код, даже не работающий, тоже не помешает.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 22:18 15-06-2006
    Anatolij2005

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

    Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 13:08 16-06-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