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

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



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу помочь вот в каком вопросе. Есть у меня файл с макросом. И файл работал и в Excel 2000 и Excel 2003. Но тут нам усилили безопасность. И в итоге под моей учеткой все работает, под пользовательскими учетками не работает. Выходит сообщение "Can't find project or library". Есть ссылка http://forum.shelek.ru/index.php/topic,821.0.html
    Под пользовательским учетками меню Tools -> References не доступно. Под моей учеткой там есть missing запись, но у меня же все работает. Кто может что-то предложить?
     
    Добавлено:
    Прочим, что странно. Я эту библиотечку руками подгружаю, а она все равно missing

    Всего записей: 22840 | Зарегистр. 19-01-2002 | Отправлено: 13:32 29-05-2009 | Исправлено: Mushroomer, 13:34 29-05-2009
    prestigo

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    размерность Excel-VBA Chart.XValues (типа массив)?
     
     
    Есть книга Excel, в ней страница для диаграммы.
    Программный код VBA создает диаграмму из точек, и строит графики-отрезки, задавая программно массив (array) значений (с Range не получится, ибо она рваная, а собирать воедино довольно долго).
    Диаграмму делает следующий код (упрощен):
     
    Sub tembsub()
    Dim arXs() As Integer
    Dim arYs() As Single
    Set wsd = Application.ThisWorkbook.Worksheets(1)
    ' ochischaem oblast' diagrammy
    wsd.ChartObjects.Delete
    wsd.Select
    wsd.Range("A1:IV32000").Select
    Selection.Delete Shift:=xlToLeft
     
    For i = 0 To 100
            ReDim Preserve arXs(i)
            ReDim Preserve arYs(i)
            arXs(i) = i
            arYs(i) = i + i + 3
    Next i
     
    ' sozdaem diagrammu
        wsd.ChartObjects.Add 100, 30, 400, 250
        Set oc = wsd.ChartObjects(1).Chart
        oc.ChartType = xlXYScatterSmoothNoMarkers
                  oc.SeriesCollection.NewSeries
                  oc.SeriesCollection(1).XValues = arXs
                  oc.SeriesCollection(1).Values = arYs
                  oc.SeriesCollection(1).Name = "=""Chast' """
    End Sub
     
    Когда размерность массива arXs() находится где-то в пределах пары десятков - все нормально, диаграмма рисуется.
    Когда эта размерность приближается к 100 (а у меня хорошо за 600!) - выдается ошибка:
     
    Run-time error '1004': Нельзя установить свойство XValues класса Series
     
    Какая же эта размерность на самом деле (есть ли информация) и как это обойти - чтобы загнать в качестве источника данных массив на пол-тысячи позиций?

    Всего записей: 314 | Зарегистр. 03-09-2006 | Отправлено: 16:08 29-05-2009
    filmax



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Макрос в Excel заканчивает свою работу копированием нескольких строк из Excel в Word. Excel закрывается без сохранения.
     
    Worksheets(1).Range(x, y).Select
    With Selection.Font
            .Name = "Times New Roman"
            .Size = 12
    End With
    Selection.Copy
     
    With CreateObject("Word.Application")
        .Documents.Add
        .Selection.Paste
        .Visible = True
        .Activate
    End With
     
    ActiveWorkbook.Close False
    Excel.Application.Quit
     
    PasteSpecial не срабатывает. Выдает ошибку.
    Собственно проблема не могу заставить макрос вставлять неформатированный текст в Word. Что не было таблицы. Вручную делал раньше через спецвставку. Я так понял команды спецвставки из Excel не подходят Word.

    Всего записей: 220 | Зарегистр. 12-10-2002 | Отправлено: 18:32 29-05-2009 | Исправлено: filmax, 07:50 01-06-2009
    MuLLIka

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите новичку! Записал макрос, который создает книгу и сохраняет её на диск С:\ под именем "Анализ стоимости материалов.xls" в которую копируется лист "Отчет", подскажите как сделать чтобы при сохранении файла к имени "Анализ стоимости материалов" добавлялись текущая дата и время или текст из определенной ячейки
     
    Sub Сформировать_отчет()
        Workbooks.Add
        ActiveWorkbook.SaveAs Filename:="C:\Анализ стоимости материалов.xls", _
            FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
        Windows("Материалы-2.xls").Activate
        Sheets("Отчет").Select
        Sheets("Отчет").Copy Before:=Workbooks("Анализ стоимости материалов.xls"). _
            Sheets(1)
        ActiveSheet.Shapes("Button 1").Select
        Selection.Delete
        Cells.Select
        Selection.Copy
        Cells.Select
        Application.CutCopyMode = False
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("E8").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = ""
        Range("E2").Select
        ActiveWorkbook.Save
    End Sub
     
    Очень жду помощи, заранее благодарен!

    Всего записей: 1 | Зарегистр. 30-05-2009 | Отправлено: 09:12 30-05-2009
    SAS888

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

    Код:
    Sub Сформировать_отчет()
        Application.ScreenUpdating = False: Sheets("Отчет").Copy: ActiveSheet.Shapes(1).Delete
        ActiveSheet.SaveAs Filename:="C:\Анализ стоимости материалов " & Format(Now, "dd.mm.yyyy hh.mm.ss") & ".xls"
        ActiveWorkbook.Close SaveChanges:=False
    End Sub

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 07:38 01-06-2009 | Исправлено: SAS888, 07:41 01-06-2009
    VictorKos



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте.
    Написал код для кнопок, чтобы циклически сдвигать содержимое (вправо, влево) в одномерном горизонтальном дипазоне из 12 ячеек:
     

    Код:
    Sub RightScroll()
        Dim a1 As String
        Dim buf As String
            ActiveCell.Offset(0, 11).Select
            a1 = ActiveCell.Address
            buf = Range(a1)
                For y = 1 To 11
                    ActiveCell.Offset(0, -1).Select
                    Range(a1).Value = Range(ActiveCell.Address)
                    a1 = ActiveCell.Address
                Next y
            Range(a1).Value = buf
    End Sub
     
    Sub LeftScroll()
        Dim a1 As String
        Dim buf As String
            a1 = ActiveCell.Address
            buf = Range(a1)
                For y = 1 To 11
                    ActiveCell.Offset(0, 1).Select
                    Range(a1).Value = Range(ActiveCell.Address)
                    a1 = ActiveCell.Address
                Next y
            Range(a1).Value = buf
        ActiveCell.Offset(0, -11).Select
    End Sub

     
    Диапазон ячеек должен находиться от 14 до 248 строки и от столбца F до столбца Q включительно.
    Код в общем-то работает, но приходится заранее устанавливать активную ячейку в нужной строке в столбце F (иначе "сдвинутся" не те данные).
    Хочу доработать код, чтобы активная ячейка сама принимала значение столбца F перед выполнением кода, а строка оставалась текущей, но не могу понять, как это сделать.  
    То есть устанавливаю курсор в строку, в которой необходимо отработать код, а в начале выполнения кода нужно проверить, не находится ли ActiveCell в недопустимой строке (меньше 14 или больше 248, иначе выдать предупреждение) и ActiveColumn должна принять значение "F:F"
     
    (PS B VBA практически не разбираюсь, над вышенаписанным кодом сидел дня три (в основном искал в интернете что то похожее и пытался адаптировать под себя))

    Всего записей: 304 | Зарегистр. 20-03-2005 | Отправлено: 12:57 01-06-2009
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VictorKos
    Для сдвига влево, выделите любую ячейку в требуемой строке и выполните макрос:

    Код:
    Sub LeftScroll()
        Dim i As Integer, buf, a()
        a = Range(Cells(ActiveCell.Row, "F"), Cells(ActiveCell.Row, "Q")).Value: buf = a(1, 1)
        For i = 1 To UBound(a, 2) - 1: a(1, i) = a(1, i + 1): Next
        a(1, UBound(a, 2)) = buf: Range(Cells(ActiveCell.Row, "F"), Cells(ActiveCell.Row, "Q")).Value = a
    End Sub

    Для сдвига вправо, делается аналогично.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 13:44 01-06-2009
    VictorKos



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SAS888
    Спасибо, буду разбираться.

    Всего записей: 304 | Зарегистр. 20-03-2005 | Отправлено: 14:09 01-06-2009
    protazzz



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

    Всего записей: 5 | Зарегистр. 10-01-2008 | Отправлено: 19:43 03-06-2009
    jurris



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня вопрос.  
    Ну никак не пойму как это сделать...
    Наверняка все просто, но мне знаний моих недостаточно.
     
    Дело в следующем.
    Надо считать около сотни значений из столбца таблицы Excel и присвоить их такому же количеству переменных,  
    после чего делаются вычисления и результаты записываются обратно в таблицу Excel.
     
    Я понял, что последнее можно сделать следующим образом:
    Sheets("Лист1").Range("B1:B100").Value=Array(Значение1, Значение2, ..., Значение100)
     
    А как сделать в обратном порядке?  
    Чтобы можно было Значение1, Значение2, ..., Значение100 столбца назначить соответственно Переменной1, Переменной2, ..., Переменной100.
     
    При попытке поменять местами и сделать Array(...)=Range(...) вылетает ошибка...
     
    Если бы было только парочка значений, тогда бы сделал просто Переменная=Range().Value и т.д.
    Но там более сотни!

    Всего записей: 535 | Зарегистр. 13-01-2005 | Отправлено: 20:18 03-06-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    protazzz
    Сортировать не надо. ListBox сам отсортирует. Свойство Sort = true
    По алгоритму:  
    1.вычитываем первую фамилию и в массив
    2.вычитываем следующую
    3.пробегаемся по массиву и сравниваем.  
       если нашли такую же, то остановились; перешли на пункт 2
       если нет, добавили в маcсив; перешли на пункт 2
     
    Можно и без массива, прямо добавлять в ListBox. Но с массивом будет несколько быстрее.

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:20 03-06-2009 | Исправлено: dneprcomp, 20:24 03-06-2009
    protazzz



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

    Цитата:
    Sub SelectionFind()
    Dim mass(1 To 100) As String
    Dim mass2(1 To 100) As String
     
    For i = 1 To 100
     If Worksheets("Лист3").Cells(i, 1) <> "" Then
        mass(i - 1) = Worksheets("Лист3").Cells(i, 1)
        y = y + 1
     End If
    Next i
     
    For i = 1 To y
    Worksheets("Лист3").Cells(i + 1, 2) = mass(i)
    Next i
     
    i = 1
    j = 1
    k = 1
    n = y
     
    For j = 1 To y
    If mass(j) <> "" Then
     mass2(k) = mass(j)
     For i = 1 To n
       If mass2(k) = mass(i) Then
          mass(i) = ""
       End If
     Next i
     k = k + 1
    End If
    Next j
     
    End Sub
     

     
    Единственный вопрос, который остался - как связать массив и ComboBox, чтобы не было пустых строк внизу? ReDim почему-то выдает ошибку

    Всего записей: 5 | Зарегистр. 10-01-2008 | Отправлено: 21:31 03-06-2009 | Исправлено: protazzz, 22:05 03-06-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    protazzz
    Для redim обявление массива должно быть без явного числа элементов
    Dim mass3()  As String  
    Затем использовать  
    redim mass3(5)  
    или
    redim preserve mass3(5)

    Цитата:
    как связать массив и ComboBox, чтобы не было пустых строк внизу

    Массив не связывают. В ComboBox добавляют в цикле командой ComboBox.AddItem  
    Откуда вообще берутся пустые строки? Или не вноси в массив изначально, или не добавляй в ComboBox
    PS. У массивов есть такое удобное свойство как Ubound  
    For i = 1 To  Ubound(mass) 'y  
    Worksheets("Лист3").Cells(i + 1, 2) = mass(i)  
    Next i  

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:18 03-06-2009 | Исправлено: dneprcomp, 22:20 03-06-2009
    protazzz



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp Спасибо, помогло внесение команды "AddItem". Пустые же "ячейки" образовывались на этапе назначения размера массива. В моём случае он был 1 - 100, т.е. очень большая размерность при малой заполненности.

    Всего записей: 5 | Зарегистр. 10-01-2008 | Отправлено: 22:28 03-06-2009
    ferias



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jurris
    Sub test()
        Dim i As Long, k As Long
        Dim list() As Variant
        k = Range("A65536").End(xlUp).Row'вычесляем, снизу в верх, первую задействованную ячейку в столбце A  
        ReDim list(1 To k)'устанвливаем размер массива от 1 до k, в сдучаи если верхняя граница диапазона ячейка A1,а нижняя граница столбец A и где номером строки является, переменная k
        For i = 1 To k'с помощью цикла, вноси значения в массив list()
            list(i) = Cells(i, 1).Value
        Next i
        For i = 1 To k'с помощью цикла, присваиваим значения ячейкам в столбце B
            Cells(i, 2).Value = list(i)
        Next i
    End Sub

    Всего записей: 39 | Зарегистр. 28-06-2007 | Отправлено: 22:43 03-06-2009
    jurris



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

    Всего записей: 535 | Зарегистр. 13-01-2005 | Отправлено: 22:55 03-06-2009
    dneprcomp



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

    Цитата:
    очень большая размерность при малой заполненности.  
    При достижении первого же пустого значения массива в твоем случае можно уже останавливать перебор и добавления командой Exit For

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 00:49 04-06-2009 | Исправлено: dneprcomp, 00:50 04-06-2009
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    protazzz
    dneprcomp
    Сформировать одномерный массив из уникальных значений диапазона "A1:A100", не содержащий пустые значения, можно существенно проще (один цикл):

    Код:
    Sub SelectionFind()
        Dim i As Long, x As New Collection, mass() As String, a()
        a = Sheets("Лист3").[A1:A100].Value: ReDim mass(1 To 1)
        For i = 1 To UBound(a, 1)
            If a(i, 1) <> "" Then
                On Error Resume Next: x.Add a(i, 1), CStr(a(i, 1))
                If Err = 0 Then
                    mass(UBound(mass)) = a(i, 1): ReDim Preserve mass(1 To UBound(mass) + 1)
                Else: On Error GoTo 0
                End If
            End If
        Next
        ReDim Preserve mass(1 To UBound(mass) - 1)
    End Sub

    Сортировку массива (если нужно) можно сделать так:

    Код:
    Sub SortMassiv()
        Dim i As Long, j As Long, mass(1 To 100) As String, x
        For i = LBound(mass) To UBound(mass) - 1
            For j = i + 1 To UBound(mass)
                If mass(i) > mass(j) Then
                    x = mass(i): mass(i) = mass(j): mass(j) = x
                End If
            Next
        Next
    End Sub

     
    Добавлено:
    jurris
    ferias
    Все делается существенно проще.
    Получить массив значений столбца "A" можно без всяких циклов одной командой:

    Код:
    With Sheets("Лист1")
        a = .Range(.[A1], .Cells(Rows.Count, "A").End(xlUp)).Value
    End With

    В результате получим массив, размерностью a(x,1), где "x" - количество элементов 1-й размерности, равное номеру последней заполненной строки столбца "A" листа "Лист1".
    Аналогично, чтобы значения элементов массива a(x,1) вставить в столбец "B", можно воспользоваться:

    Код:
    With Sheets("Лист1")
        .Range(.[B1], .Cells(UBound(a, 1), "B")).Value = a
    End With

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 05:17 04-06-2009 | Исправлено: SAS888, 05:21 04-06-2009
    DenisSmo

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

    Всего записей: 9 | Зарегистр. 14-04-2009 | Отправлено: 07:45 04-06-2009
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SAS888
    Конечно можно. Я ведь с кодом protazzz и не разбирался. Так, несколько решений на уровне алгоритмов подсказал. Подсказать одно, писать за кого-то код - другое
     
    PS. При больших массивах ReDim Preserve займет много времени. Нерационально переписывать массив на каждом значении.
     
     
    Добавлено:
    DenisSmo
    Все можно.
    http://www.fmsinc.com/FRee/NewTips/Access/accesstip31.asp
    http://www.blueclaw-db.com/listbox-directory.htm

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 08:37 04-06-2009
       

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