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

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



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

    Второй вариант не понял. К тому же, у меня не строки пустые, а ячейки. Массивы "одномерные" В  одной книге одни и те же данные идут в столбик, а в другой строками.
     
    Их надо уметь туда-сюда переливать (заказчик еще не определился, как он их предпочитает править, и скорее всего ему понадобятся оба варианта). И настоящие нули в данных встречаются. А данные на самом деле трехмерные, третье измерение в каждой книге свое и задается нумерацией листов.
     

    Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 15:43 12-03-2007 | Исправлено: LevT, 15:51 12-03-2007
    LevT



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

    Первый вариант не получается применить: ни смысл действий непонятен, ни методом тыка ничего не выходит. И вообще массивы как-то далеки от интуитивности.
     
    Сейчас у меня формула массива
    {=ТРАНСП('[Книга.xls]5'!R3C2:R3C12)}
     
    Нужно избавиться от получения нулей там, где в источнике пустые ячейки. Для начала пытаюсь вставить формулу вручную. Что должно быть?  
    =ЕСЛИ(ТРАНСП('[Книга.xls]Лист5'!R3C2:R3C12);'[Книга.xls]Лист5'!R3C2:R3C12);"")
    - на это ругается.
     
    Нужны ли фигурные скобки или это чисто визуальное "украшение"?  

    Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 18:36 12-03-2007
    Lexy4ka

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

    Всего записей: 3 | Зарегистр. 11-03-2007 | Отправлено: 18:40 12-03-2007
    LevT



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

    Гы-гы. Она-таки =ТРАНСП  в строке формул, а в VBA надо писать =TRANSPOSE  
    2007 русский.

    Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 18:46 12-03-2007
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Из Excel FAQ:
    maratino

    Цитата:
    Помогите!
    Есть словарь Русс-Китайский (сам делаю в Excel)
    Мне нужен такой вариант: Когда я начинаю набирать слово,на пример:
    "Из какого вы города?" когда я нажал на "И" он сортирует все слова, которые начинаются на "И", дальше, "Из" естественно все слова которые начинаются "Из"
    дальше ПРОБЕЛ дальше, "Из к" естественно из внизу изложенного списка отфильтровав
    выдаст в окошко
    "Из какого вы города?"
    "Из какого вы района?"
     
    Дальше набираем "Из какого вы р"
    Все слова, которые начинаются "Из какого вы р"
    То есть, в данном случай, из нашего списка:
    "Из какого вы района?"
     
     
    .......
    Из России                                    俄国
    Из какого вы города?    您 那城市的人?
    Из Москвы                                    莫斯科(的)
    Из Санкт-Петербурга                圣彼得堡(的)
    Из какого вы района?    圣彼得堡(的)  

    Можно сделать с использованием TextBox контроля на листе.
    Предположим таблица начинается с А2, причем первая ячейка заголовок. В А1 поместим TextBox (правой кнопкой по панели инструментов, выбрать Control Toolbox). Можно немного увеличить высоту первой строки. Двойным кликом по текстбоксу попадаем в редактор VBA и вставляем:
    Код:
    Private Sub TextBox1_Change()
    If TextBox1.Text <> "" Then
        Range("A2").AutoFilter Field:=1, Criteria1:="=" & TextBox1.Text & "*", Operator:=xlAnd
    Else
        Range("A2").AutoFilter Field:=1
    End If
    End Sub

    Переходим обратно в лист и тестируем.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 18:58 12-03-2007
    hackman



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите пожалуйста. Проблема в том что не знаю как задать у макросе формулу сумы( для сменной ячейки)(Нужно задать суму из ячейки E6 по ячейку vsgvl 6 рядка
    Подробнее...

    Всего записей: 185 | Зарегистр. 22-09-2003 | Отправлено: 20:17 12-03-2007 | Исправлено: hackman, 20:19 12-03-2007
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    hackman
    Можно так:
    Код:
    Cells(6, vsgvl + 1).Formula = "=SUM(" & Range(Cells(6, 5), Cells(6, vsgvl)).Address & ")"

    Если нужна относительная адресация, используй Address(RowAbsolute:=False,ColumnAbsolute:=False)

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 21:07 12-03-2007
    olik22

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят нужна помощь,  
    есть форма на которой расположены listbox i textbox.В listboxe отображаются данные из таблицы, а проблемка возникла вот где, хочу прикрутить textbox, что бы внего вводить данные и соответственно они заполняли таблицу.Такое возможно? и как сделать проверку,  что бы данные вводились по порядку, так как половина таблицы уже заполнена
     я так понимаю,что должен использовать, но как сделать проверку и добавление по одному значению
    Range("naujas") = Me.TextBox1.Text

    Всего записей: 3 | Зарегистр. 24-02-2007 | Отправлено: 21:54 12-03-2007 | Исправлено: olik22, 22:49 12-03-2007
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk
    Спасибо за совет
    Но беда в том, что я, ну ни как не найду ТекстБокс
    Пожалуйста, если можно чуть поподробнее для "Чайника"

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 22:08 12-03-2007 | Исправлено: maratino, 22:19 12-03-2007
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    maratino
    Клик правой кнопкой по панели с кнопками:
       
    Затем выбираем текстбокс
       
    и рисуем на листе.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 23:02 12-03-2007 | Исправлено: Yuk, 23:02 12-03-2007
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk
    ОГРОМНОЕ ТЕБЕ СПАСИБО!
    Отлично, жаль только то, что медленно фильтрует, но все равно отлично
     
    Добавлено:
    Yuk
    Скажи пожалуйста!
    Жаль то, что иероглифы не фильтрует почему то
    Скажи. А есть такой вариант, скажем активируешь ячейку, или наводишь курсором
    на нее, и выплывает картика

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 23:33 12-03-2007 | Исправлено: maratino, 23:48 12-03-2007
    The okk



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

    Цитата:
    Гы-гы. Она-таки =ТРАНСП  в строке формул, а в VBA надо писать =TRANSPOSE  
    2007 русский.  

    Смотри, что пишется в свойствах .Formula и .FormulaLocal. Можно и =ТРАНСП и =TRANSPOSE, только надо понимать, куда и что пишешь.
     
    Добавлено:
    maratino

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

    Вставляешь примечание: Вставка - Примечание.
    Редактируешь примечание: Формат примечания - Цвета и линии - в Цвет заливки выбираешь "Другие способы заливки" - Рисунок.

    Всего записей: 327 | Зарегистр. 16-11-2006 | Отправлено: 06:47 13-03-2007
    Yuk



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

    Цитата:
    Жаль то, что иероглифы не фильтрует почему то  

    А иероглифы у тебя тоже в 1-м столбце? Если в другом, то нужен другой текстбокс со своей процедурой, можно сделать по аналогии. Но будет ли работать с китайским, не знаю, не проверял.

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здраствуйте! Подскажите, пожалуйста, как сделать так, чтобы при формировании таблицы (отчёта) нижний колонтитул (подписи) смещались бы каждый раз при обновлении на   нефиксированное количество строк  вниз или вверх, так чтобы нижний колонтитул каждый раз был на строку ниже таблицы. (Количество столбцов в таблице фиксированное, количество строк - нефиксированное).

    Всего записей: 12 | Зарегистр. 02-03-2007 | Отправлено: 11:03 13-03-2007
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk
    Я не владею экселем так, как вы, мне кажется я не то сделал
    на другом листе вроде отфильтровал
    Если бы я знал про эту текстбокс
    Я вчера 4часа сидел манипулировал и наслаждался возможностями текстбокса
    Когда я переписываюсь с китаянками, они даже и не догадываются,что я не знаю
    ни одного иероглифа или слова
    СПАСИБО вам ребята
    Я поклоняюсь перед вами
    Люблю грамотных и интуитивных
     
    Добавлено:
    Yuk
    СПАСИБО!
    Все отлично, и это получилось. Я увлекаюсь фотошопом, мне нужен быстрий поиск
    жаль, что в ACD не могу найти регулятор таймера
     
    http://maratino.narod.ru  
     
    это мой сайт фотогалерея

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 11:09 13-03-2007 | Исправлено: maratino, 11:19 13-03-2007
    AsPAndA

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    у меня такой вопрос => как мне сравнивать значение ячеекдвух файлов?
     
    Например
    for i=1 to 10000(конец Sheeta нужен если что может как то еще можно , а то я заведомо большое беру )
     for j=1 to 10000
           if cells(i:1).value=cells(j:4) do вот здесь и есть разные файлы
                  4to to tam
           end if
     next j
    next i
     
    Заранее спасибо!!!

    Всего записей: 7 | Зарегистр. 01-11-2005 | Отправлено: 18:02 13-03-2007 | Исправлено: AsPAndA, 18:04 13-03-2007
    theghost



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как присвоить ячейке имя?
    Вот попал я в нужную мне ячейку:

    Код:
    ActiveCell.Offset(Selection.Rows.Count + 1, 7).Activate

    Как мне присвоить этой ячейке имя, скажем, Itog?

    Всего записей: 16 | Зарегистр. 03-07-2004 | Отправлено: 20:17 13-03-2007
    Yuk



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

    Код:
    ActiveWorkbook.Names.Add Name:="Itog", RefersTo:="=" & ActiveSheet.Name & "!" & ActiveCell.Address

    Вместо ActiveCell можно подставить свою формулу. Activate не обязательно.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 22:42 13-03-2007 | Исправлено: Yuk, 22:43 13-03-2007
    theghost



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Yuk
     
    Спасибо! Просто в конце дня думать было очень внапряг... Не мог додуматься как склеить строки

    Всего записей: 16 | Зарегистр. 03-07-2004 | Отправлено: 23:31 13-03-2007
    The okk



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AsPAndA
    Ну, как сравнивать, как раз понятно (If <=> Then...). Вопрос в том, что ты хочешь получить в качестве результата.

    Всего записей: 327 | Зарегистр. 16-11-2006 | Отправлено: 07:24 14-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