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

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

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

    Цитата:
    Private Sub Worksheet_Change(ByVal Target As Range)  
    For Each r In Target.Rows  
        If Second(r.Cells(1, 1)) Mod 10 <> 0 Then  
            r.Delete  
        End If  
    Next  
    End Sub  

    Провожу код макроса в Экселе!
    Подскажите куда вставлять Ваш код, я его вставил в конце, но ничего не происходит
    Global RowPtr As Long, ColPtr As Long, PortNum, CPSVal
    Global Const CmdLine = "C:\Program Files\CPS Plus\cps.exe /MINIMIZED" ' program install dir
     
    Sub Auto_Open() ' this sub runs automatically when you open the spreadsheet
     
    PortNum = InputBox("Collect data from Communcation port: (enter port number)", "Excel DDE Example", 1)
    RowPtr = 2
    On Error Resume Next ' ignore errors and try to launch cps.exe
    RetVal = Shell(CmdLine, 4) ' launch CPS Plus using command line defined above
    If RetVal = 0 Then ' error - cps not found
    Beep:  MsgBox ("Cannot Find " & CmdLine) ' display warning
    End If
    Application.Wait Now + 0.00002 ' delay
    AppActivate Application.Caption ' set the focus back to excel
    StartCollecting ' set up excel to collect data from CPS Plus
    End Sub
     
    Sub StartCollecting()
    RowPtr = 2: ColPtr = 1 ' initialize global variables
    Sheets("Sheet1").Activate ' activate sheet 1 and set up a DDE link to CPS Plus
    Sheets("Sheet1").Cells(1, 50).Formula = "=CPSPLUS|DRIVER!NEWDATA"
    Sheets("Sheet1").Cells(2, 50).Formula = "=CPSPLUS|DRIVER!NEWDATA"
    Sheets("Sheet1").Cells(3, 50).Formula = "=CPSPLUS|DRIVER!NEWDATA"
    ActiveWorkbook.SetLinkOnData "CPSPLUS|DRIVER!NEWDATA", "GetCPSData"
    ' the SetLinkOnData method causes excel to run the GetCPSData macro
    ' automatically when new data is available in the CPS Plus.
    End Sub
     
    Sub GetCPSData()
    ' this example is setup to collect data from COM1
    On Error Resume Next
    CPSVal = "COM" & PortNum & "_VALUE"
    chan = DDEInitiate("CPSPLUS", "DRIVER")
    F1 = DDERequest(chan, CPSVal)
    CPS$ = F1(1)
     
    CPSVal = "COM" & PortNum & "_DATEA_STAMP"
    F2 = DDERequest(chan, CPSVal)
    CPS2$ = F2(1)
     
    CPSVal = "COM" & PortNum & "_TIME_STAMP"
    F3 = DDERequest(chan, CPSVal)
    CPS3$ = F3(1)
     
    Sheets("Sheet1").Cells(RowPtr, 1).Formula = CPS$
    Sheets("Sheet1").Cells(RowPtr, 2).Formula = CPS2$
    Sheets("Sheet1").Cells(RowPtr, 3).Formula = CPS3$
    RowPtr = RowPtr + 1
    DDETerminate chan
    End Sub
     
    Sub Auto_Close() ' this macro runs automatically when you close the spreadsheet
    StopCollecting ' set up excel to stop collecting data from CPS Plus
    'chan = DDEInitiate("CPSPLUS", "DRIVER")
    'DDEExecute chan, "[UnloadCPS]" ' tell CPS to quit
    'DDETerminate chan
    End Sub
     
    Sub StopCollecting()
    Sheets("Sheet1").Activate ' activate sheet1
    Sheets("Sheet1").Cells(1, 50).Formula = "" ' remove the dde link from R1C50
    Sheets("Sheet1").Cells(2, 50).Formula = "" ' remove the dde link from R1C50
    ActiveWorkbook.SetLinkOnData "CPSPLUS|DRIVER!NEWDATA", ""
    ' shut down the SetLinkOnData function by
    ' assigning it an empty string to the macro name
    End Sub
     
    Как мне добиться чтобы данные от весов в Эксель вводились через равные промежутки времени (черех минуту, через две минуты) или хотябы чтобы строки дубликаты удалялись?
    Заранее благодарю

    Всего записей: 19 | Зарегистр. 28-08-2006 | Отправлено: 15:04 30-08-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    utmpatpc
    Попробуй поизменять число здесь:
    Цитата:
    Application.Wait Now + 0.00002 ' delay

    Можно задать задержку явным образом (10 секунд):
    Код:
    Application.Wait Now +TimeValue("0:00:10")

     
    Если не получится, пробуй предыдущий вариант. Надо вставлять код не в модуль, а в код листа. Читай внимательно мой пост.
     
     
     
    Добавлено:
    vladimir_oz

    Цитата:
    Мне надо распечатать userform на принтер. Но так как форма достаточно большая то при печати через printform она не умещается на листе.
    Вопрос как распечатать ее или в альфомном формате (повернуть на 90 градусов) или уменьшить масштаб рисунка. Лучше первое

    Взято отсюда.
    Делается PrintScreen формы, вставляется во временный лист, который уже печатается как угодно. Подробнее здесь.
     
     
    Добавлено:
    Anton T

    Цитата:
    Как можно сделать "фильтр" в Listbox1?

    Практически то же самое с небольшими изменениями.
    Подробнее.
     
    Добавлено:
    namomelkorsp
    Посмотри мои ответы для Anton T.
    Список заполняется либо через свойство RowSource, либо методом AddItem. Можно также заполнить из массива через свойства List или Column.
    А насчет литературы - хелп и гугл.
     

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 15:25 30-08-2006
    namomelkorsp

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

    Цитата:
    Добавлено:  
    namomelkorsp  
    Посмотри мои ответы для Anton T.  
    Список заполняется либо через свойство RowSource, либо методом AddItem. Можно также заполнить из массива через свойства List или Column.  
    А насчет литературы - хелп и гугл.  

     
    Да это я знаю в принципе но я не могу понять что у меня с этими списками: списки создовал не я. У них нет никаких свойств, их нельзя изменять в размерах и при выделении даве в режиме конструктора показывается не имя списка а номер ячейки (((
     
    Как с таким списком работать я не могу понять.
     
    Добавлено:
    Да еще извеняюсь но у меня вопрос который скорее всего уже гдето здесь проскакивал.  
    Просто срочно надо а искать некогда.
    Впрос как в VBA обращатся к ячейкам не по букве и индексу а по двум индексам.

    Всего записей: 11 | Зарегистр. 29-11-2005 | Отправлено: 16:42 30-08-2006
    Yuk



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

    Цитата:
    как в VBA обращатся к ячейкам не по букве и индексу а по двум индексам.

    Cells(строка,столбец)

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 17:02 30-08-2006
    vladimir_oz

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

    Цитата:
    Добавлено:  
    vladimir_oz  
     
    Цитата:Мне надо распечатать userform на принтер. Но так как форма достаточно большая то при печати через printform она не умещается на листе.  
    Вопрос как распечатать ее или в альфомном формате (повернуть на 90 градусов) или уменьшить масштаб рисунка. Лучше первое  
     
    Взято отсюда.  
    Делается PrintScreen формы, вставляется во временный лист, который уже печатается как угодно. Подробнее здесь .  
     

    Yuk Спасибо заработало!

    Всего записей: 40 | Зарегистр. 21-08-2006 | Отправлено: 17:07 30-08-2006
    namomelkorsp

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток.
    я отркываю текстовый фаил и записываю его в ячейки по строчно перед этим разбив строки на столбцы. Так вот чтение файла происходит быстро, разбор строк тоже быстро а вот запись в ячейку происходит очееееень медленно  
    в ячейку произвожу запись через  
    Worksheets("FirmatSortedCopy").Cells(i, j + 44).Value = s1  
    Подскажите как ускорить этот процесс.
    тк мне надо заполнить 7000 ячеек, а 80 ячеек оно заполняло около 10-ти минут )))
    кто знает подскажите

    Всего записей: 11 | Зарегистр. 29-11-2005 | Отправлено: 12:41 31-08-2006
    Anton T

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

    Цитата:
    Практически то же самое с небольшими изменениями

    Большое спасибо, пойду пить пить пиво за тове здоровье!

    Всего записей: 325 | Зарегистр. 12-04-2006 | Отправлено: 13:40 31-08-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    namomelkorsp
    Что-то уж правда сильно медленно. Формулы, условное форматирование, обработчики событий есть?
    Попробуй сначала записать в массив (такого же размера, что и область данных), который затем записать в ячейки зараз. С памятью эксел работает гораздо быстрее. Если размерность данных неизвестна, используй динамический массив. Тут были примеры, например в шапке по ранжированию.

    Всего записей: 1182 | Зарегистр. 02-07-2001 | Отправлено: 16:10 31-08-2006
    namomelkorsp

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

    Всего записей: 11 | Зарегистр. 29-11-2005 | Отправлено: 16:24 31-08-2006
    sgulinsky



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Yuk Bol'shoe spasibo za poyasnenie, no problema okazalas' ne v RowLevels.
     
    Ya pytalas' otkryt' outline cherez VBA, vot tak:  
     
    KOD
    Цитата:
     
     
    For i = 1 To Sheets.Count  
       TheName = Sheets(i).Name  
       Sheets(TheName).Unprotect  
       Sheets(TheName).Activate  
       ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1  
    Next i  
    ne srabatyvaet
     
     
    A nado bylo tak:
    For i = 1 To Sheets.Count  
       TheName = Sheets(i).Name  
       Sheets(TheName).Unprotect  
       Sheets(TheName).Select
       ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1  
    Next i  
     
    Pochemu-to ShowLevels rabotaet posle .Select, no ne posle .Activate... A  

    Всего записей: 2 | Зарегистр. 09-08-2006 | Отправлено: 10:36 01-09-2006
    namomelkorsp

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Создаю динамический массив:  
     
    Dim MyArray()  
    ReDim MyArray(1 To 4)  
    ReDim MyArray(1 To 3, 1 To 4)  
     
    это получится двумерный массив  
    так вот если я меняю его размер  
    ReDim Preserve MyArray(1 To 3, 1 To 7)  
    тогда все работает а мне нужно менять первый размер :  
    ReDim Preserve MyArray(1 To 7, 1 To 3)  
    Тогда пишет "out of range"  
    Кто знает как поменять размер помогите плиз.  
    P.S В массиве есть данные их нельзя удалять и нельзя поменять местами строки и столбцы.

    Всего записей: 11 | Зарегистр. 29-11-2005 | Отправлено: 11:52 01-09-2006
    CMD



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

    Всего записей: 311 | Зарегистр. 18-05-2004 | Отправлено: 12:33 01-09-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    namomelkorsp
    В ReDim Preserve можно менять только последнюю размерность.
    Есть ли возможность определить размерность заранее? Например, прочитать весь файл, определить размер и вернуться назад.
    Другой вариант - сначала читать столбцы в строки, а потом транспонировать массив в новый массив (циклом).  

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk
    Да можно и так я над этим уже думал  
    Просто хотел найти более простой и экономичный способ

    Всего записей: 11 | Зарегистр. 29-11-2005 | Отправлено: 15:33 01-09-2006
    Yuk



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

    Цитата:
    как проверить есть ли в выделенной диаграмме дополнительная ось?


    Код:
    Dim secondary As Boolean
    For Each a In ActiveChart.Axes
        If a.AxisGroup = xlSecondary Then
            secondary = True
        End If
    Next
    If secondary Then MsgBox "Chart contain secondary axes"

    Можно проверить конкретную ось или конкретный ряд данных.

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Yuk
    Спасибо за подсказку, я пошел от обратного - ставлю сам разрывы страниц
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
     
    У меня возник более сложный вопрос:
    Есть описание алгоритма расчета контрольного числа расходного расписания
    Вроде все расписано, но никак не пойму как это применить
     
    Контрольное число расходного расписания определяется по следующему алгоритму:
    int CRCTAB_16[]={
        0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
        0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
        0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
        0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
        0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
        0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
        0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
        0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
        0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
        0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
        0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
        0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
        0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
        0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
        0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
        0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
        0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
        0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
        0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
        0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
        0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
        0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
        0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
        0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
        0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
        0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
        0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
        0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
        0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
        0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
        0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
        0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
    };
     
     
    Пример текста программы расчета контрольного числа строки (на языке программи-рования – Visual Basic):
     
    Предварительо необходимо произвести обработку массива CRCTAB_16 (!!!!)
     
    For i = 0 To UBound(CRCTAB_16)
            CRCTAB_16(i) = CRCTAB_16(i) And &HFFFF&
    Next i
     
    Private Function calcCRC16(ByVal iPrevSumm As Long, ByRef btArr() As Byte, ByVal iLen As Long) As Long
        Dim i As Long
     
        For i = 0 To iLen
            iPrevSumm = CLng(CRCTAB_16((((iPrevSumm \ 256)) And &HFF)) Xor ((iPrevSumm And &HFF) * 256) Xor (btArr(i))) And &HFFFF
        Next i
        calcCRC16 = iPrevSumm
    End Function
     
    Параметры:
    IprevSumm - предыдущая сумма. При начальном вызове должна быть равна 0.
    btArr() – байтовый входной массив, контрольное число которого надо получить
    iLen – длина вышеуказанного байтового массива.
     
    Пример:
    Уменя есть строка, полученная из текстового файла.
    100/46823/0021004682324.03.200524.03.2005950004001Яковлева Е. П.Антонова О. В.10001151005000213310100001000000100011510000100001000010000100100310004061972622899000010000001001003289900001000028990000100002900000029000000
     
    Каким образом получается контрольная сумма. 59977

    Всего записей: 32 | Зарегистр. 19-04-2006 | Отправлено: 19:09 01-09-2006
    Yuk



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

    Цитата:
    Есть 3 листа:
    На первом листе есть список из артикулов:
    A2,A3,B2,B3,C2,C3(это наименование артикулов)
     
    На втором листе есть список из артикулов:
    A1,A3,B1,B3,C1,C3
     
    На третьем листе есть список из артикулов:
    A1,A2,B1,B2,C1,C2
     
     
    Есть итоговый лист где нужно получить список:
    A1,A2,A3,B1,B2,B3,C1,C2,C3
    то есть со всех листов нужно собрать все артикулы и оставить только  
    уникальные(все дубликаты и пустые удалить)
     
    P.S.Артикулов около 400
    Кол-во не постоянное
    --------------------------------------
    Делал так:
    Скопировал списки друг под другом
    а потом сделал сводную таблицу
     
    ЕСТЬ ЛИ СПОСОБ ПРОЩЕ?

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

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

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

    Цитата:
    Попробуй поизменять число здесь:
    Цитата:Application.Wait Now + 0.00002 ' delay  
     
    Можно задать задержку явным образом (10 секунд):
    Код:Application.Wait Now +TimeValue("0:00:10")  

    Yuk
    Долго не писал, пытался поменять промежутки времени по твоему совету. Ничего не получается. Как валила куча данных от весов, так и продолжает валить. Где рыть ума не приложу, даже руки опускаются.
    Help pls

    Всего записей: 19 | Зарегистр. 28-08-2006 | Отправлено: 13:54 02-09-2006
    namomelkorsp

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как в vba удалить все картинки и элементы управления с листа
    еще как на лист скопировать веб-страницу зная ее адресс (программно)

    Всего записей: 11 | Зарегистр. 29-11-2005 | Отправлено: 18:55 02-09-2006
    Yuk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    utmpatpc
    Пробовал ли еще раз связаться с производителем и задать ему мои вопросы?
    Пробовал ли мой макрос, удаляюший лишние строки?

    Цитата:
    пытался поменять промежутки времени по твоему совету. Ничего не получается.

    Попробуй в VBA редакторе поставить breakpoint на это строчку и посмотри, когда происходит к ней обращение. Перед каждым добавлением данных или нет?
     
    Опиши как можно подробнее работу с этой программой, начиная от включения весов и запуска компьютера. Если можно, сделай скриншоты. Только в таком случае я могу помочь.
     
     
     
    Добавлено:
    namomelkorsp

    Цитата:
    как в vba удалить все картинки и элементы управления с листа  


    Код:
    For Each i In ActiveSheet.Shapes
        i.Delete
    Next

     
     
     
    Добавлено:

    Цитата:
    как на лист скопировать веб-страницу зная ее адресс (программно)

    Accessing Web Pages Using Excel VBA
     
    Accessing Web Pages Using Excel VBA - SSL and HTTPS

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

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA
    ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru