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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    robinLib
    Просто в левом вернем углу чего?
    Листа? Cells(1&, 1&).Select
    Текущего диапазона данных, в котором находиться активная ячейка?
    Dim vRow As Long, vCol as Long
    vRow = ActiveCell.CurrentRegion.Row
    vCol = ActiveCell.CurrentRegion.Column
    Cells(vRow, vCol).Select

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 15:00 17-03-2007
    robinLib

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ...нет не годится.  
    Еще раз: у меня на листе есть кнопки перехода к разным таблицам на листе. Так вот когда я нажымаю на кнопку, то активная ячейка должна переместиться на первую ячейку таблицы. Но! Эта первая ячейка таблицы должна начинаться с сверху листа. не со средины и не  конца а именно сверху. Конкретный пример. Пустьесть ячейка А1. При нажатии на кнопку пусть курсор переходит в D19 - она оказывается в середине листа. Чтоб получилось правильно нужно перемотать Scrool Bar чуть вправо и вниз тогда она окажется в левм верхнем углу...А как это сделать автоматом?

    Всего записей: 138 | Зарегистр. 24-07-2005 | Отправлено: 15:44 17-03-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    robinLib
     
    Dim vRow As Long, vCol As Long
     
    'Если D19 не верняя левая ячейка требуемой таблицы,
    'то определим номер строки и столбца такой ячейки
    vRow = Range("D19").CurrentRegion.Row
    vCol = Range("D19").CurrentRegion.Column
    'прокрутка
    ActiveWindow.ScrollColumn = vCol
    ActiveWindow.ScrollRow = vRow

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 16:04 17-03-2007
    robinLib

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

    Всего записей: 138 | Зарегистр. 24-07-2005 | Отправлено: 17:01 17-03-2007
    AsPAndA

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В чем ошибка?
    ругается на эту строку(application or object defined error), если меняю роунд на сум то все ок
     
    ActiveSheet.Cells(j, 15).FormulaR1C1 = "=round(rc[-2]+rc[-2]*0,01;2)"
     
     
    Dim i, j As Integer
     
    Sub try()
     
    j = 7
    For i = 7 To 10000
    If Cells(i, 1) = "Èòîãî" Then
        ActiveSheet.Cells(i, 10).FormulaR1C1 = "=sum(r[" & j - i & "]c:r[-1]c)"
        ActiveSheet.Cells(i, 13).FormulaR1C1 = "=sum(r[" & j - i & "]c:r[-1]c)"
        ActiveSheet.Cells(i, 14).FormulaR1C1 = "=rc[-3]*rc[-1]"
        ActiveSheet.Cells(j, 15).FormulaR1C1 = "=round(rc[-2]+rc[-2]*0,01;2)"
        j = i + 3
    End If
    Next i
     
    End Sub

    Всего записей: 7 | Зарегистр. 01-11-2005 | Отправлено: 15:58 19-03-2007
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AsPAndA
    У меня проходит FormulaR1C1 = "=round(rc[-2]+rc[-2]*0.01,2)" (англ.ексел)
    Или попробуй FormulaR1C1Local

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 16:08 19-03-2007
    AsPAndA

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    и у меня английский, но не пашет

    Всего записей: 7 | Зарегистр. 01-11-2005 | Отправлено: 16:14 19-03-2007
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AsPAndA
    Почему же ты тогда используешь , и ; как в русском?

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 16:25 19-03-2007
    AsPAndA

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Странно, но я цопи-пасте с твоего поста заделал и заработало
     
    Добавлено:
    Yuk,  
    где я использую и ?

    Всего записей: 7 | Зарегистр. 01-11-2005 | Отправлено: 16:26 19-03-2007
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AsPAndA
    А если повнимательнее посмотреть в конец строки?

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 16:33 19-03-2007
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AsPAndA
    FormulaR1C1 = "=round(rc[-2]+rc[-2]*0,01;2)"  
    разделитель дробной части строго ТОЧКА
    разделитель параметров ЗАПЯТАЯ
     

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 16:33 19-03-2007
    AsPAndA

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо!!!
    Хотя странно в екселе то , и ;  
    я просто думал , что туда надо тупо формулу вставить

    Всего записей: 7 | Зарегистр. 01-11-2005 | Отправлено: 16:36 19-03-2007 | Исправлено: AsPAndA, 16:40 19-03-2007
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AsPAndA
    Я же писал - используй FormulaR1C1Local.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 16:49 19-03-2007
    Isuaven



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, помогите разрулить проблему!
    Вот например у MsgBox'a можно споконо узнать на какую кнопку нажал пользователь...
    А вот как узнать что нажаль пользователь в стандартном сообщении Экселя, типа при попытке открытия открытой книги и т.д.???

    Всего записей: 42 | Зарегистр. 18-02-2005 | Отправлено: 21:47 19-03-2007
    The okk



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Isuaven
    А это смотря откуда взялось "стандартное сообщение Экселя". - Если Эксель сам это сообщение вызвал, то никак (разве что попытаться отследить последствия). Если стандартное сообщение вызвал ты, то и результат получаешь аналогично MsgBox'у.
    Что конкретно ты хочешь сделать?

    Всего записей: 327 | Зарегистр. 16-11-2006 | Отправлено: 09:12 20-03-2007 | Исправлено: The okk, 09:13 20-03-2007
    evsino

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    суть такая
    есть файловый архив примерно 5000 папок
    в каждой папке есть файлы EXCEL
    1 задача найти папки где всего 1 файл EXCEL и поместить эти папки в директорию 1
    2 задача найти папки где 2 файл EXCEL и поместить эти папки в директорию 2
    3 задача найти папки где более 2 файлов EXCEL и поместить эти папки в директорию 3
    4 задача выбрать из всех фалов директории 1 информацию и занести ее в таблицу EXEL
     
    меня интересует можно ли это все реализовать в EXCEL
    если можно то примерно как

    Всего записей: 26 | Зарегистр. 13-11-2006 | Отправлено: 20:19 21-03-2007
    Olive77

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    evsino
    можно при помощи  
     - Dir() (описание посмотри в Helpe)
     - Microsoft Script Runtime Library (scrrun.dll): более предпочтительный

    Всего записей: 1271 | Зарегистр. 26-12-2002 | Отправлено: 21:35 21-03-2007 | Исправлено: Olive77, 16:12 22-03-2007
    Oyger

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

    Всего записей: 122 | Зарегистр. 22-03-2007 | Отправлено: 12:42 22-03-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Oyger
    Пробуй через
    Цитата:
    Microsoft Script Runtime Library  
    - пректрасно понимает русский
    Dim fso As New Scripting.FileSystemObject
     
     
    If fso.FileExistis(sFilePath) Then fso.DeleteFile sFilePath
     
    Можно несколько по другому, подключите Microsoft VSript Regular Expression им можно проверять файлы по маске, тогда:
     
    Dim pFolder As Scripting.Folder
    Dim pFile As Scripting.File
     
    Set pFolder = fso.GetFolder(sFolderPath)
    For Each pFile In pFolder.Files
       'Проверяете и удаляете требуемые файлы
    Next pFile

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 16:46 22-03-2007
    genf

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть такая тема-существует база данных в Exel-вид:
    Наименование позиции (МН105-1) её характеристики (прокат-масса, кг и арматура-масса, кг) Таких позиций около 150.
    Необходима программа работающая по принципу - ввожу данные в таблицу Exel (наименование позции) и количество. Получаю данные, соотвествующие этой позиции в базе данных помноженные на количество.
    Помогите советом. Как это сделать?

    Всего записей: 8 | Зарегистр. 17-03-2007 | Отправлено: 11:08 23-03-2007 | Исправлено: genf, 11:22 23-03-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