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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 2)

Модерирует : ShIvADeSt

ShIvADeSt (11-01-2010 10:17): http://forum.ru-board.com/topic.cgi?forum=33&topic=10903  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

ShIvADeSt



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

 
 
Обсуждаем вопросы только по Excel VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Excel, не относящиеся к программированию, задаем в теме Excel FAQ

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Предыдущие ветки топика: Часть 1
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format (eng.)
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами 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.
  • Приемы, хитрости, трюки и нюансы работы в Microsoft Excel - сайт "Планета Excel", целиком посвященный Excel и всему, что с ним связано.
  • Microsoft Excel: Таблицы и VBA. Справочник. Вопросы и Ответы. Советы. Примеры.  
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2, часть 3
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов
    Найти "чужое" окно и нажать в нем кнопку (вписать текст в текстовое поле)
    Работа с UNICODE-символами в VBA: запись, чтение из ячейки, перевод в ASС и обратно
    Как программно подключить дополнительные библиотеки (например, "Microsoft Scripting Runtime" или "Microsoft ActiveX Data Objects 2.8 Library) через References

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:58 23-04-2007 | Исправлено: JekG, 22:32 10-01-2010
    chalvs

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

    Цитата:
    Заканивая работу в Excel нада чтобы делала резервную копию допустим в
    F:\Бухгалтерия\автобухгалтер.xls
    Такое реально!

     
    SERGE_BLIZNUK
     

    Цитата:
    ( Private Sub Workbook_BeforeClose(Cancel As Boolean) )
    думаю, что проблем не должно быть, но у меня лично опыта использования данного события нет...
    Кстати,, Отпишитесь сюда о полученных результатах!  

     
     Получилось так, резервную сохраняет а та что открыта нет, я дописал такой же код
    только на рабочую  
     
    Sub Резерв ()
        ActiveWorkbook.SaveAs Filename:= _
               "F:\Бухгалтерия\автобухгалтер.xls", _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
     ActiveWorkbook.SaveAs Filename:= _
               "D:\Бухгалтерия\Резерв_автобухгалтер.xls", _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    End Sub
     
    Если есть другие варианты то подскажите!

    Всего записей: 17 | Зарегистр. 14-07-2007 | Отправлено: 19:41 21-07-2007
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    chalvs
    1) посмотри в ПМ
     
    2) Из книги А. Гладкий, А. Чиртик Excel. Трюки и эффекты
    кусочек из Глава 2. Быстрое размножение рабочей книги

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 23:17 21-07-2007
    chalvs

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

    Цитата:
    2) Из книги А. Гладкий, А. Чиртик Excel. Трюки и эффекты
    кусочек из Глава 2. Быстрое размножение рабочей книги  

     
    Огромное спасиба!
    Быстрое размножение рабочей книги, просто супер.

    Всего записей: 17 | Зарегистр. 14-07-2007 | Отправлено: 00:49 22-07-2007
    dummy84

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день, помогите пожауста новичку далекому от програмирования. Задача следующая: имееться таблица с такими столбцами  
     
    Код \счет \ кoppеспондент\ назначения платежа\ Дата\ Дебет\ Кредет\ МФО
    необходимо найти суму платежей по кредиту в назначении который допустим есть слово начинающееся на возвр или пере.
     
    Sub proba()
    '
     
    Dim i As Integer
    Dim s As Double
    Dim n As Integer
    ' находим последнюю строку
    Range("A65536").End(xlUp).Select
            ActiveCell.Offset(2, 0).Value = "Всего"
            n = Application.CountA(Sheets("Ëèñò1").Range("A:A"))
    Cells(n + 5, 1).Value = n
    'тут я нашел столбец или точнее ячейку которая содержит слово кредет, а вот
    'правильно отсортировать этот столбец удалив соответственно с таблицы строки с нулями незнаю
        Cells.Find(What:="кредет", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).Activate
        Columns("G:G").Select
    ' тут необходимо обратиться к диапазону который начинался б в а1 а заканчивался в нижнем правом углу, тоже не знаю как!
        Range("A1:h275").Sort Key1:=Range("G2"), Order1:=xlDescending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    ' тут я пытаюсь в столбце назначение найти нужные мне слова
       Cells.Find(What:="назначение", After:=ActiveCell, LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Activate
        Columns("D:D").Select
            тут я пытаюсь в цикле найти эти слова, но даже не знаю как зделать их не чуствительными к регистру!
            For i = 2 To n
            If InStr(Cells(i, 4).Value, "возвр") <> 0 Or InStr(Cells(i, 4).Value, "пере"<> 0 Then        Cells(i, 7).Interior.ColorIndex = 8
            End If
            If Cells(i, 7).Interior.ColorIndex = 8 Then
            s = s + Cells(i, 7).Value
            End If
            Next i
        Cells(n + 2, 7).Value = s
    End Sub
     
    Люди если можете помогите очень нужно, а сам к сожалению не могу, наверное не дано да и некому подсказать. Все у нас такие же...

    Всего записей: 29 | Зарегистр. 11-07-2007 | Отправлено: 11:57 23-07-2007
    vasiliy74



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SERGE_BLIZNUK - босс рубрики
    Вопрос по синтаксису например хочу выделить столбец но начиная с третей строки такое возможно?
    Worksheets("List").Range("A3:A)- это VBA не понимает

    Всего записей: 289 | Зарегистр. 21-02-2006 | Отправлено: 16:02 23-07-2007
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vasiliy74
    а если так?
      Worksheets("List").Range("A3:A65536").Select
     
    dummy84
    внимательнее смогу посмотреть вашу функцию только вечером (дома)...
    А пока, навскидку?
    1) Вы уверены, что задача не решается без программирвоания банальными формулами (например, через СУММЕСЛИ(...)  
    2) верхний регистр в VBA - UCase()
    т.е. Ваш код будет выглядеть так:
      InStr(UCase(Cells(i, 4).Value), "ВОЗВР") <> 0
     
    3) писать лучше - Кредит

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 16:49 23-07-2007
    dummy84

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1) я попробывал InStr(UCase(Cells(i, 4).Value), "ВОЗВР") <> 0, не получилось
    тоесть ячейку в 7 столбце не выделяет  если возвр начинаеться с большой буквы, навероне я чего то не догоняю,
    2) а вот как обратися ко всей таблице при сортировке понял как  Range("a1", Cells(LastRow - 1, LastColumn)) а перед этим соответственно было  
    If WorksheetFunction.CountA(Cells) > 0 Then
            'Search for any entry, by searching backwards by Rows.
            LastRow = Cells.Find(What:="*", After:=[A1], _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlPrevious).Row
            'Search for any entry, by searching backwards by Columns.
                    LastColumn = Cells.Find(What:="*", After:=[A1], _
                        SearchOrder:=xlByColumns, _
                        SearchDirection:=xlPrevious).Column
                        End If
     
    3) а вот писать все таки нужно кредет (Дебет-кредет) это не кредит, хотя имено кредитами я и занимаюсь. Хотя спорить сильно не буду в руском я не очень - живу в Украине просто.
     
    4) огромное Вам спасибо не думал что мне кто то поможет даже, я просто впервые на форуме. Судьба заставила - учебники не помогают, а очень хочеться научиться да и рядом человека разбирающегося в этом нет.  
     
     

    Всего записей: 29 | Зарегистр. 11-07-2007 | Отправлено: 17:07 23-07-2007
    Riccio

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    многие позиции (например - эта) не классифицируется. то есть мы отбираем только моторные и индустриальные масла. как один из способов - по маркам соответствий, которые как раз в файле!
     
    ещё один маленький вопрос! на 2ггц процессоре и 512 мб оперативки как быстро должен работать эксель с 76000 позиций? у меня например приходится ждать даже обработки протягивания формул с первой до 76000 позиции минуты по 4!

    Всего записей: 5 | Зарегистр. 20-07-2007 | Отправлено: 17:15 23-07-2007
    dummy84

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs (функция) - возвращает абсолютное значение числа  
    And (операция) - логическое И  
    AppActivate (оператор) - активизирует окно приложения  
    Array (функция) - создает массив из параметров и возвращает его как переменную типа Variant  
    Asc (функция) - возвращает числовой код первого символа строки аргумента  
    Atn (функция) - возвращает арктангенс числа в радианах  
    Веер (оператор) - проигрывает звуковой сигнал через динамик компьютера  
    Call (оператор) - передает управление процедуре модуля (Sub), функции модуля (Function) или подпрограмме DLL  
    CBool (функция) - приводит выражение к типу Boolean  
    CByte (функция) - преобразует выражение к типу Byte  
    CCur (функция) - преобразование выражения к типу Currency  
    CDate (функция) - преобразование выражения к типу Date  
    CDbl (функция) - преобразование к типу Double  
    ChDir (оператор) - изменяет текущий каталог на устройстве  
    ChDrive (оператор) - изменяет текущее устройство  
    Choose (функция) - возвращает значение из списка аргументов с определенным порядковым номером  
    Chr (функция) - возвращает символ, связанный с определенным числовым кодом  
    CInt (функция) - преобразование выражения к типу Integer  
    CLng (функция) - преобразование выражения к типу Long  
    Close (оператор) - закрывает файл, открытый оператором Open  
    Command (функция) - возвращает командную строку, используемую для запуска Visual Basic или приложения на Visual Basic  
    Const (оператор) - объявления констант  
    Cos (функция) - возвращает косинус числа  
    Create Object (функция) - создать OLE Automation объект  
    CSng (функция) - преобразование выражения к типу Single  
    CStr (функция) - преобразование выражения к типу String  
    CurDir (функция) - возвращает текущий каталог логического устройства  
    CVar (функция) - преобразование выражения к типу Variant  
    CVErr (функция) - возвращает подтип ошибки, для определенного пользователем номера ошибки  
    Date (оператор) - устанавливает значение системной даты  
    Date (функция) - возвращает значение системной даты  
    DateAdd (функция) - возвращает переменную типа Variant, содержащую дату, отличающуюся от заданной на определенный интервал времени  
    DateDiff (функция) - возвращает число временных интервалов, между двумя датами  
    DatePart (функция) - возвращает определенную часть заданной даты  
    DateSerial (функция) - возвращает дату для заданного года, месяцами, дня  
    DateValue (функция) - возвращает дату  
    Day (функция) - возвращает число от 1 до 31, соответствующее текущему дню месяца  
    DDB (функция) - возвращает значение амортизационных потерь за определенный период  
    Declare (оператор) - на уровне модуля объявляет ссылки к внешним подпрограммам в DLL  
    Deftype (операторы) - устанавливает тип данных по умолчанию на уровне модуля для переменных, параметров подпрограмм, а также возвращаемых значений для функций и операторов Property Get, начинающихся с определенных символов  
    Dim (оператор) - объявляет переменные и выделяет память под них  
    Dir (функция) - возвращает имя файла или каталог, подходящий для данного шаблона или атрибута файла, или метку тома устройства  
    DoEvents (функция) - прерывает выполнение приложения  
    Do... Loop (оператор) - повторяет блок команд до тех пор, пока условие верно или до тех пор, пока условие не станет верным  
    End (оператор) - заканчивает подпрограмму или блок команд  
    Environ (функция) - возвращает строку, связанную с переменной окружения операционной системы  
    EOF (функция) - возвращает значение, указывающее, достигнут ли конец файла  
    Eqv (оператор) - проверяет логическое равенство двух выражений  
    Erase (оператор) - повторно инициализирует элементы массивов фиксированного размера и перераспределяет память под динамические массивы  
    Error (оператор) - эмулирует возникновение ошибки  
    Error (функция) - возвращает текст сообщения данного номера ошибки  
    Exit (операторы) - осуществляет выход из циклов Do ... Loop, For... Next, функции и процедур  
    Ехр (функция) - возвращает экспоненту числа  
    FileAttr (функция) - возвращает режим открытия или номер (handle) файла  
    FileCopy (оператор) - копирует файл  
    FileDateTime (функция) - возвращает дату и время создания или последней модификации файла  
    FileLen (функция) - возвращает длину файла в байтах  
    Fix (функция) - возвращает целую часть числа  
    For Each...Next (оператор) - повторяет одну и ту же последовательность команд для каждого элемента массива или коллекции  
    For...Next (оператор) - повторяет последовательность команд определенное число раз  
    Format (функция) - форматирует выражение в соответствии с заданным форматом  
    FreeFile (функция) - возвращает следующий не занятый номер файла для использования в операторе Open  
    Function (оператор) - объявляет имя, аргументы и код подпрограммы, возвращающей значение (функции)  
    FV (функция) - возвращает значение ренты, основываясь на периодических взносах и постоянной норме капиталовложений  
    Get (оператор) - читает данные из открытого файла в переменную  
    GetAttr (функция) - возвращает атрибуты файла, каталога или метки тома  
    GetObject (функция) - возвращает OLE Automation объект для файла сданным расширением  
    GoSub... Return (оператор) - выполняет подпрограмму  
    GoTo (оператор) - передает управление определенной строке подпрограммы без возврата контроля  
    Hex (функция) - возвращает строку, представляющую шестнадцатеричное значение числа  
    Hour (функция) - возвращает целое число в диапазоне 0 - 23 включительно, представляющее определенный час дня  
    If...Then... Else (оператор) - выполнение групп команд в зависимости от значения выражения  
    Iff (функция) - возвращает одно из двух значений в зависимости от значения выражения  
    Imp (операция) - импликация двух выражений  
    Input (функция) - возвращает символы из файла, открытого для последовательного доступа или как двоичный файл  
    Input # (оператор) - считывает данные из открытого файла в переменные  
    InputBox (функция) - показывает диалоговое окно ввода, ожидает ввода текста и возвращает содержимое введенного текста, после закрытия окна  
    InStr (функция) - возвращает позицию первой найденной подстроки в строке  
    Int (функция) - возвращает целую часть числа  
    Is (операция) - сравнение двух ссылок на объекты  
    IsArray (функция) - возвращает булево значение, указывающее, является ли данная переменная массивом  
    IsDate (функция) - возвращает булево значение, указывающее, может ли выражение быть преобразовано к типу Date  
    IsEmpty (функция) - возвращает булево значение, указывающее, инициализировано ли значение данной переменной  
    IsError (функция) - возвращает булево значение, указывающее, является ли выражение значением кода ошибки  
    IsMissing (функция) - возвращает булево значение, указывающее, был ли передан данный необязательный параметр в подпрограмму  
    IsNull (функция) - возвращает булево значение, указывающее, не содержит ли выражение недопустимое (Null) значение  
    IsNumeric (функция) - возвращает булево значение, указывающее, может ли данное выражение рассматриваться как число  
    IsObject (функция) - возвращает булево значение, указывающее, является ли выражение объектом OLE Automation  
    Kill (оператор) - удаляет файл  
    LBound (функция) - возвращает значение нижней границы индекса массива  
    LCase (функция) - возвращает строку в нижнем регистре  
    Left (функция) - возвращает определенное число символов с начала строки  
    Len (функция) - возвращает число символов строки или число байт, необходимых для хранения переменной  
    Let (оператор) - присваивает значение выражения переменной или свойству  
    Like (операция) - сравнение двух строк  
    Line Input # (оператор) - считывает строку из файла в переменную  
    Load (оператор) - загружает в память форму или элемент управления  
    LoadPicture (функция) - загружает графический образ в объекты: Form,  
    Loc (функция) - возвращает текущую позицию чтения/записи в открытом файле  
    Lock (оператор) - контролирует доступ других процессов ко всему или части открытого файла  
    LOF (функция) - возвращает размер в байтах открытого файла  
    Log (функция) - возвращает натуральный логарифм числа  
    LSet (оператор) - копирует строку в строковую переменную, а также копирует значение переменной одного специализированного типа в переменную другого специализированного типа  
    LTrim (функция) - возвращает копию строки без лидирующих пробелов  
    Mid (оператор) - замещает определенное число символов в строке на символы из другой строки  
    Mid (функция) - возвращает определенное число символов с определенной позиции строки  
    Minute (функция) - возвращает целое число в диапазоне 0 - 59, представляющее минуту часа  
    MkDir (оператор) - создает новый каталог  
    Mod (операция) - возвращает остаток от деления двух чисел  
    Month (функция) - возвращает целое число в диапазоне 1 - 12, представляющее номер месяца  
    MsgBox (функция) - показывает сообщение в диалоговом окне, ожидает выбор одной из кнопок пользователем и возвращает значение, указывающее, какая кнопка была выбрана  
    Name (оператор) - переименовывает файл или каталог  
    Not (операция) - логическое отрицание  
    Now (функция) - возвращает текущие значения даты и времени  
    Oct (функция) - возвращает строку, представляющую восьмеричное представление числа  
    On Error (оператор) - устанавливает обработчик ошибок и задает местоположение подпрограммы обработки; используется также для отмены обработки ошибок подпрограммой обработчика  
    Оn..GoSub, On...GoTo (операторы) - передача управления на одну из нескольких определенных строк (меток), в зависимости от значения выражения  
    Open (оператор) - скрывает файл для ввода/вывода  
    Option Base (оператор) - используется для объявления значения нижней границы размерности индексов массивов по умолчанию  
    Option Compare (оператор) - используется на уровне модуля для объявления метода сравнения по умолчанию при сравнении строк  
    Option Explicit (оператор) - используется на уровне модуля для установки проверки наличия объявлений для всех переменных в данном модуле  
    Option Private (оператор) - используется на уровне модуля для указания, что весь модуль является Private  
    Or (операция) - логическое ИЛИ  
    Partition (функция) - возвращает строку, указывающую, сколько раз встретились числа из заданного диапазона  
    Print # (оператор) - записывает форматированные данные в файл  
    Private (оператор) - используется на уровне модуля для объявления Private переменных и выделяет место в памяти для их хранения  
    Property Get (оператор) - объявляет имя, аргументы и код подпрограммы получения значения свойства  
    Property Let (оператор) - объявляет имя, аргументы и код процедуры установки значения свойства  
    Property Set (оператор) - объявляет имя, аргументы и код процедуры установки ссылки на объект  
    Public (оператор) - используется на уровне модуля для объявления Public переменных и выделяет место в памяти для их хранения  
    Put (оператор) - записывает переменную в файл  
    QBColor (функция) - возвращает RGB код, соответствующий номеру цвета  
    Randomize (оператор) - инициализирует генератор случайных чисел  
    RGB (функция) - возвращает целое число, представляющее значение RGB кода  
    ReDim (оператор) - используется на уровне подпрограммы для переопределения размера динамических массивов и выделения под них места в памяти  
    Rem (оператор) - вставка комментариев в программу  
    Reset (оператор) - закрывает все открытые программой файлы  
    Resume (оператор) - продолжает выполнение программы после завершения процедуры обработчика ошибок  
    Right (функция) - возвращает определенное число символов с правой стороны строки  
    RmDir (оператор) - удаляет каталог  
    Rnd (функция) - возвращает случайное число  
    RSet (оператор) - копирует правую часть строки в строковую переменную  
    RTrim (функция) - возвращает копию строки без конечных пробелов  
    SavePicture (оператор) - сохраняет в файл графический образ объекта Form, элементов управления PictureBox или Image  
    Second (функция) - возвращает целое значение в диапазоне 0 - 59,представляющее секунду в минуте  
    Seek (оператор) - устанавливает позицию для следующей операции чтения или записи в открытый файл  
    Seek (функция) - возвращает текущую позицию чтения/записи открытого файла  
    Select Case (оператор) - выполняет одну или несколько команд, в зависимости от значения выражения  
    SendKeys (оператор) - посылает одно или несколько нажатий клавиш активному окну, как если бы они были введены пользователем с клавиатуры  
    Set (оператор) - связывает ссылку на объект с переменной или свойством  
    SetAttr (оператор) - устанавливает атрибуты файла  
    Sgn (функция) - возвращает знак числа  
    Shell (функция) - запускает внешнюю программу на выполнение  
    Sin (функция) - возвращает значение синуса угла  
    Space (функция) - возвращает строку, содержащую определенное число пробелов  
    Spc (функция) - позиционирование в строке вывода  
    Sqr (функция) - подсчет значения квадратного корня числа  
    Static (оператор) - используется на уровне модуля для объявления переменных и выделяет место в памяти для их хранения. Переменные сохраняют значения до завершения программы  
    Stop (оператор) - приостанавливает выполнение программы  
    Str (функция) - возвращает строковое представление числа  
    StrComp (функция) - возвращает результат сравнения строк  
    StrConv (функция) - возвращает преобразованную строку  
    String (функция) - возвращает строку заданной длины из одинаковых символов  
    Sub (оператор) - объявляет имя, параметры и тело процедуры  
    Switch (функция) - подсчитывает значения списка выражений и возвращает значение или выражение, связанное с выражением из списка, значение которого равно True  
    Tab (функция) - позиционирование в строке вывода  
    Tan (функция) - возвращает значение тангенса угла  
    Time (оператор) - устанавливает значение системных часов  
    Time (функция) - возвращает значение типа Date, указывающее текущее системное время  
    Timer (функция) - возвращает число секунд, прошедших после полуночи  
    TimeSerial (функция) - возвращает значение типа Date, содержащее время для заданного часа, минуты и секунды  
    Time Value (функция) - возвращает значение типа Date, содержащее время суток  
    Trim (функция) - возвращает копию строки без начальных и конечных пробелов  
    Type (оператор) - объявляет на уровне модуля специализированный тип данных  
    TypeName (функция) - возвращает строку информации о заданной переменной  
    UBound (функция) - возвращает значение наибольшего индекса для данной размерности массива  
    UCase (функция) - возвращает строку, преобразованную в верхний регистр  
    Unload (оператор) - выгружает форму или элемент управления из памяти  
    Unlock (оператор) - контролирует доступ других процессов ко всему или части открытого файла  
    Val (функция) - возвращает числовое представление строки  
    VarType (функция) - возвращает значение, указывающее тип переменной  
    Weekday (функция) - возвращает целое число, представляющее день недели  
    While...Wend (оператор) - выполняет в цикле последовательность команд до тех пор, пока верно условие  
    Width # (оператор) - назначает ширину строки вывода для операции записи в открытый файл  
    With (оператор) - выполняет последовательность команд для конкретного объекта или переменной специализированного типа  
    Write # (оператор) - записывает данные в файл  
    Хоr (операция) - исключающее ИЛИ  
    Year (функция) - возвращает целое число, представляющее год
    _________________
    всем начинающим чайникам таким как я это может пригодиться!!!
     
    Добавлено:

    Цитата:
    SERGE_BLIZNUK  

     
    еще раз спасибо, благодоря вам я додумался найти список функций или операторов не знаю как правильно назвать, так вот чтобы в ячейке найти текст не зависимо от региста необходимо воспользоваться не Ucase a Lcase -  пробывал помогло так что на проблему меньше.

    Всего записей: 29 | Зарегистр. 11-07-2007 | Отправлено: 17:36 23-07-2007
    vasiliy74



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SERGE_BLIZNUK
    да помогло;)
     
     
    Добавлено:
    Как в цикле  

    Код:
    For Each c1 In out_r1
        If c1 = 0 Then
            If IsEmpty(c1) Then Exit For
            Rows(c1.Row).Select
            Selection.Delete Shift:=xlUp
            'Set c1 = c1.Offset(-1, 0) - не работает
        End If
    Next c1

    сделать откат на одну ячейку назад? для того чтобы обработать строку после удалённой?
     
    Добавлено:
    решил что поможет однако нет  

    Код:
     
    For Each c1 In out_r1
        While c1 = 0
            If IsEmpty(c1) Then Exit For
            Rows(c1.Row).Select
            Selection.Delete Shift:=xlUp
        Wend
    Next c1
    Sheets("List").Select
    MsgBox "Done", vbInformation
     

     
    Добавлено:
    пытался и так тоже нет

    Код:
    For Each c1 In out_r1
        If IsEmpty(c1) Then Exit For
        Set c2 = c1
        While c2.Value = 0
            Range(c1.Offset(0, -1), c1).Select
            Selection.Delete Shift:=xlUp
            Set c2 = c1
        Wend
    Next c1

    Всего записей: 289 | Зарегистр. 21-02-2006 | Отправлено: 18:23 23-07-2007 | Исправлено: vasiliy74, 19:07 23-07-2007
    SERGE_BLIZNUK

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

    Цитата:
    не Ucase a Lcase -  пробывал помогло  

    вы не обратили в моём посте я значение в строке сравнения перевёл в верхний регистр!!! (т.е. не  "возвр", а  "ВОЗВР" ) но совершенно забыл подчернуть это. Впрочем, ваше решение с LCase - это тоже самое (только теперь сравниваемое значение ОБЯЗАТЕЛЬНО должно быть строчными буквами!)  ладно, это всё лирика.
     
    Лучше скажите, задача решена? Можно лоб не морщить? ;-))
     
    Кстати, лучше бы Вы функции убрали за тегами  [MORE] ... большой список функции [/MORE]  Это можно сделать, нажав редактировать на вашем сообщении...
     
    vasiliy74
    долго смотрел на Ваш код...
    1) может быть, проще Вам будет сказать, что именно вы хотите удалить?!
    Т.сказать — постановку оригинальной задачи?...
    2) так и не понял, что у вас за диапазон out_r...  
    3) Для удаления удобно просто напросто сделать цикл снизу вверх - т.е. от последней записи к первой.
    Кстати, если хотите удалять строчку целиком, то это можно сделать так
      Rows(i).Delete -  
    или так
      Cells(i, 1).EntireRow.Delete
    (i - номер строки)
     
     
     
    Riccio

    Цитата:
    многие позиции (например - эта) не классифицируется. то есть мы отбираем только моторные и индустриальные масла. как один из способов - по маркам соответствий, которые как раз в файле!  

    ладно, сейчас у Вас крестик ставится по вхождению слов "МОТОР" или "ИНДУСТР" в наименование масла. Это чем то не устраивает Вас? Какой поиск по типу должен быть?
    (приведите пример для конктретного масла и конретного типа)...
    И поймите, что требовать от программы зачатков искусственного интеллекта по крайней мере наивно. Пока я ещё не понял, как приведённые в таблице списки моторных и индустриальных масел (столбцы L M N) должны влиять на крестики...
     
    Теперь по поводу скорости. я уже говорил, что если нужно скорость - то Excel не самый лучший выбор. Для ускорения можете временно выключить автоматические вычисление в параметрах программы. но это, конечно, не радикальное решение.
    Переход на любую СУБД (хотя бы тот же Access), с грамотно спроектириванной структурой БД даст многократный выигрыш по скорости!
     
     
     
     
     
     
     
     

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 20:58 23-07-2007
    dummy84

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SERGE_BLIZNUK
    Да не совсем задачка решена кое что еще не сделано:
    1) хочется с помощью наверное inputbox задать возможность введения с клавиатуры названий фирм которые должны искаться в столбце кореспондент, а при нахождении так же как и в случае с назначением платежа ячейка этой  же строки cells(i, 7) должна выделяться цветом.
    2) а так же хочеться чтобы макрос сам открывал другую книгу и с нее вытягивал данную таблицу даже если она находтться не в ячейке А1, но этот момент я где то в книжке видел попробую найти что-то подобное.  
     
    и спасибо за морщины

    Всего записей: 29 | Зарегистр. 11-07-2007 | Отправлено: 22:55 23-07-2007
    vasiliy74



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

    Цитата:
    vasiliy74  
    долго смотрел на Ваш код...  
    1) может быть, проще Вам будет сказать, что именно вы хотите удалить?!  
    Т.сказать — постановку оригинальной задачи?...  
    2) так и не понял, что у вас за диапазон out_r...  
    3) Для удаления удобно просто напросто сделать цикл снизу вверх - т.е. от последней записи к первой.  
    Кстати, если хотите удалять строчку целиком, то это можно сделать так  
      Rows(i).Delete -  
    или так  
      Cells(i, 1).EntireRow.Delete  
    (i - номер строки)  

    out_r один столбец таблицы в котором я нахожу значение равное 0 и удаляю строку таблицы со смещением в верх  
    пока что таблица состоит из 3 столбцов, удаление строки не подходит поскольку у меня есть кнопка и как оказалось она тоже удаляется поэтому есть желание работать только с ячейками таблицы  
    да а я както и неподумал что обратный цикл может будет эфиктивнее и навено единственным решением

    Всего записей: 289 | Зарегистр. 21-02-2006 | Отправлено: 08:11 24-07-2007
    XOPEK HAPKOMAH



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

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

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

    Цитата:
    ладно, сейчас у Вас крестик ставится по вхождению слов "МОТОР" или "ИНДУСТР" в наименование масла. Это чем то не устраивает Вас? Какой поиск по типу должен быть?  
    (приведите пример для конктретного масла и конретного типа)...  
    И поймите, что требовать от программы зачатков искусственного интеллекта по крайней мере наивно. Пока я ещё не понял, как приведённые в таблице списки моторных и индустриальных масел (столбцы L M N) должны влиять на крестики...

     
    "Мотор" и "Индустр" - не всегда встречаются в столбце В! а марка написана всегда! например возьмём строку №8 -  
    ВСЕСЕЗОННОЕ ТРАНСМИССИОННОЕ МИНЕРАЛЬНОЕ МАСЛО "MOBIL ATF (AUTOMATIC TRANSMISSION FLUID) 220", ПРИМЕНЯЕТСЯ В СИСТЕМАХ ПЕРЕДАЧ АВТОМОБИЛЕЙ. СОДЕРЖИТ ПО МАССЕ БОЛЕЕ 70 % БИТУМИНОЗНЫХ НЕФТЕПРОДУКТОВ (ТЯЖЕЛЫХ ДИСТИЛЛЯТОВ)
    здесь нет маркёра МОТОР или ИНДУСТР, а есть марка MOBIL ATF! эта же марка есть в столбце "Список масел моторных - коммерческих" (№19-20 - MOBIL ATF)
    Таким образом однозначно - это моторное масло и тд...

    Всего записей: 5 | Зарегистр. 20-07-2007 | Отправлено: 10:54 24-07-2007
    dummy84

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

    Всего записей: 29 | Зарегистр. 11-07-2007 | Отправлено: 16:30 24-07-2007
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Riccio
    1) помните, я чуть выше писал насчёт искусственного интелекста?
    так вот, пример со строчкой №8 показателен!
    в строке (я чуть обрежу начало и конец для наглядности) МАСЛО "MOBIL ATF (AUTOMATIC TRANSMISSION FLUID) 220", нет вхождения строчки с типом масла из строки M20 - напомню, что там находится значение MOBIL ATF 220!!!!
    Таким образом возникает дополнительно условие - "эвристика" - отбрасывать цифры в конце типа масла. Но так нельзя, т.к. один и тот же тип входит и в моторные и в индустриальные.
    Я вам больше скажу, задача вообще вряд ли решаема, т.к. данные в столбцах L M N
    противоречат друг другу!!!
    посмотрите, например на строчку №9, оно вроде как индустриальное.
    но, поиск по "MOBILGREASE XHP" даёт нам нахождение и в столбце N34  
    и в столбце M165 (Список масел моторных - коммерческих )
    а кстати, типа "MOBILGREASE XHP 222" из строки №9  вообще нет в L M N ...
     
    если Вам действительно нужно решить задачу, то нужно:
    1) выделить тип масла/смазки в отдельный столбец
    2) для всех типов обеспечить таблицу (L M N) с однозначным соответствием ->
        Моторное или Индустриальное
     
     
     
     
     
     
    Добавлено:
    dummy84

    Цитата:
    Добрый день, может ли мне кто-нибуть помочь с функией inputbox?  
    необходимо чтобы пользователь задал имя компании или часть имени  

    дык и в чём вопрос?
    пишите в своём макросе:
      CompanyName = LCase(InputBox("Enter Company Name:"))
      ' сразу приводим к маленьким буквам, раз уж они вам нравятся больше, чем БОЛЬШИЕ
      цикл по строчкам, проверяем, например, столбец 4
        if InStr(LCase(Cells(i, 4)).Value, CompanyName) >0 then
        With Cells(i, 4).Interior
             .ColorIndex = 3
             .Pattern = xlSolid
        End With
     
    где-то так... писал прямо в форуме, так что не обессудьте

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 16:36 24-07-2007
    dummy84

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

    Всего записей: 29 | Зарегистр. 11-07-2007 | Отправлено: 19:42 24-07-2007
    nick7inc



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

    Цитата:
    Вопрос по синтаксису например хочу выделить столбец но начиная с третей строки такое возможно?  
    Worksheets("List").Range("A3:A)- это VBA не понимает  

     
    Во-первых, пропущена закрывающая кавычка,а во-вторых, да, в одну строчку не уложишься. Можно выделить весь столбец до максимально возможной строки, как было предложено:
    SERGE_BLIZNUK

    Цитата:
    а если так?  
      Worksheets("List").Range("A3:A65536").Select

     
    Но это не оптимально, если пользоваться перебором по ячейкам (долго будет), да и при копировании может резко подскочить размер книги, поскольку Excel пожет посчитать, что используются все пустые ячейки в столбце и сохранит их на диск.
     
    Лучше всё-таки делать через Cells.SpecialCells(xlCellTypeLastCell).Row , уточняя последюю используемую строку.

    Всего записей: 1138 | Зарегистр. 04-05-2007 | Отправлено: 11:19 25-07-2007 | Исправлено: nick7inc, 11:20 25-07-2007
    vasiliy74



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    кто вставлял курс валюты в Excel?

    Всего записей: 289 | Зарегистр. 21-02-2006 | Отправлено: 15:13 25-07-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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 2)
    ShIvADeSt (11-01-2010 10:17): http://forum.ru-board.com/topic.cgi?forum=33&topic=10903


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru