Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
1

Как сравнить 2 таблицы с ценами, обозначить изменения и внести поправки.

22.01.2011, 19:49. Показов 4981. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Просьба помочь в решении парочки несложных задач на ВБА (слабак я в ВБА), инфо в файле.
Смысл в следующем:

Есть длинный список товаров, все работает, все ок, но поставщик присылает новый прайс – несколько измененный (цена, новый товар… и прочее), мы его просто копируем на вкладку „PROVERKA“ и запускаем макрос, который сравнивает цены, обозначает их и в конце вносит изменения.

Использую Excel 2007

За помощь заранее благодарен!
Вложения
Тип файла: xls check_PRICE_2003.xls (32.5 Кб, 92 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2011, 19:49
Ответы с готовыми решениями:

Внести поправки
Сгенерируйте числовой ряд длиной 30 элементов, представляющий квадраты чисел натурального ряда....

Внести изменения в карту таблицы сообщений
есть структура: struct AFX_MSGMAP { const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)(); const...

Решение систем линейных уравнений, внести поправки
Решение систем линейных уравнений, работа с матрицами в MS Excel

Внести поправки в программу, автор которой "пошел далеко"
Здравствуйте, ребята. Пишу впервые на ваш форум. Мне посоветовали вас как динамичный и...

38
Заблокирован
22.01.2011, 22:58 2
Для первой кнопки:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub m_1()
Dim LastRowCENA_TOVARA As Long
Dim LastRowPROVERKA As Long
Dim oCell As Excel.Range
Dim oFindCell As Excel.Range
LastRowCENA_TOVARA = Worksheets("CENA_TOVARA").Cells.SpecialCells(xlCellTypeLastCell).Row
LastRowPROVERKA = Worksheets("PROVERKA").Cells.SpecialCells(xlCellTypeLastCell).Row
For Each oCell In Worksheets("CENA_TOVARA").Range("A1:A" & LastRowCENA_TOVARA)
    Set oFindCell = Worksheets("PROVERKA").Range("A1:A" & LastRowPROVERKA). _
        Find(What:=oCell.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        If Not oFindCell Is Nothing Then
            If oFindCell.Offset(0, 5).Value > oCell.Offset(0, 5).Value Then
                oCell.Font.Color = -16776961
                oCell.Offset(0, 5).Interior.Color = -16776961
            ElseIf oFindCell.Offset(0, 5).Value < oCell.Offset(0, 5).Value Then
                oCell.Font.Color = -11489280
                oCell.Offset(0, 5).Interior.Color = -11489280
            End If
        End If
Next oCell
End Sub
Вторая кнопка:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Ìàêðîñ3()
Dim LastRowCENA_TOVARA As Long
Dim LastRowPROVERKA As Long
Dim oCell As Excel.Range
Dim oFindCell As Excel.Range
LastRowCENA_TOVARA = Worksheets("CENA_TOVARA").Cells.SpecialCells(xlCellTypeLastCell).Row
LastRowPROVERKA = Worksheets("PROVERKA").Cells.SpecialCells(xlCellTypeLastCell).Row
For Each oCell In Worksheets("CENA_TOVARA").Range("A1:A" & LastRowCENA_TOVARA)
    Set oFindCell = Worksheets("PROVERKA").Range("A1:A" & LastRowPROVERKA). _
        Find(What:=oCell.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        If Not oFindCell Is Nothing Then
            oCell.Offset(0, 5).Value = oFindCell.Offset(0, 5).Value
        End If
Next oCell
End Sub
Добавлено через 34 минуты
Кнопка 3. Поиск аномального по коду и наименованию товара:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub m_1()
Dim LastRowPROVERKA As Long
Dim LastRowCENA_TOVARA As Long
Dim oCell As Excel.Range
Dim oFindCell As Excel.Range
LastRowPROVERKA = Worksheets("PROVERKA").Cells.SpecialCells(xlCellTypeLastCell).Row
LastRowCENA_TOVARA = Worksheets("CENA_TOVARA").Cells.SpecialCells(xlCellTypeLastCell).Row
For Each oCell In Worksheets("PROVERKA").Range("A1:A" & LastRowPROVERKA)
    Set oFindCell = Worksheets("CENA_TOVARA").Range("A1:A" & LastRowCENA_TOVARA). _
        Find(What:=oCell.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        If oFindCell Is Nothing Then
            Worksheets("PROVERKA").Range("A" & oCell.Row & ":F" & oCell.Row).Interior.Color = 65535
        End If
Next oCell
For Each oCell In Worksheets("PROVERKA").Range("E1:E" & LastRowPROVERKA)
    Set oFindCell = Worksheets("CENA_TOVARA").Range("E1:E" & LastRowCENA_TOVARA). _
        Find(What:=oCell.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        If oFindCell Is Nothing Then
            Worksheets("PROVERKA").Range("A" & oCell.Row & ":F" & oCell.Row).Interior.Color = 65535
        End If
Next oCell
End Sub
2
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
23.01.2011, 00:07  [ТС] 3
Огромнейшее спасибо Вам! Busine2009

На планете-ексель меня ногами запинали (...и помогли правда тоже)
Думал сам попробую написать, да не так просто оказалось, материала много, а вот чтоб воедино все концы собрать - сложно.

Еще раз спасибо! буду разбираться!

Я доделываю “умную“ таблицу, которая облегчает работу со длинным списком товаров, сортирует, выделяет нужное, ищет товар по категориям и по коду, делает заказ поставщику налету 1 кнопкой PDF, выставляет наценку на товар по таблице наценок, показывает прибыль с товара и % прибыли, умеет отсортировывать ходовой товар … и т.д.

Еще в плане:
3 валюты, смена языка названий столбцов на ходу, отсортированный выбор товаров – одной кнопкой налету создать „Счет“ с логотипом фирмы … и т.д.

Одним словом - себе надо -и с другими поделюсь

Отцы экселя может и посмеются, а кому-то может и в помощь будет. Когда доделаю – выложу на форуме.
0
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
23.01.2011, 00:40  [ТС] 4
Работает!

Кнопка 4 пока остается загадкой, но я на нее и не особо рассчитывал!
Миниатюры
Как сравнить 2 таблицы с ценами, обозначить изменения и внести поправки.  
Вложения
Тип файла: xls check_PRICE_BUSINE2009_excel2003.xls (57.0 Кб, 55 просмотров)
0
Заблокирован
23.01.2011, 00:54 5
LV112,
а как должны вставляться строки из одного листа в другой: нужно учитывать порядок по возрастанию в первом столбце или можно вставить строку в конец нужной группы?
И зачем вы вставили в своём сообщении скрин-шот и файл выложили? На них же ничего нет.
1
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
23.01.2011, 01:42  [ТС] 6
Цитата Сообщение от Busine2009 Посмотреть сообщение
LV112,
а как должны вставляться строки из одного листа в другой: нужно учитывать порядок по возрастанию в первом столбце или можно вставить строку в конец нужной группы?
И зачем вы вставили в своём сообщении скрин-шот и файл выложили? На них же ничего нет.
На счет фото, так просто, если кто будет интересоваться, может проще будет разобраться.

В файле который я по кускам собираю, около 600 строк, и номера товаров в группах идут не все по порядку! т.е. если его поместить строго по убыванию, то он сместиться из группы, что не есть хорошо!

Ответ:

1) вариант: вставить строку в конец нужной группы

2) вариант: вставить строку в нужную группу по номеру, но только - если она не выходит за рамки группы.

Любой вариант подойдет!
0
Заблокирован
23.01.2011, 23:02 7
4 кнопка. Работает после 3 кнопки, т.к. поиск осуществляется ячеек, выделенных жёлтым. Во всех таблицах должны быть одинаковые столбцы (количество и наименования). Вставка строк осуществляется после слова GRUPPA. Наверное, после выполнения макроса нужна сортировка. Сразу вставлять строки по возрастанию - не известно, как, т.к. в первом столбце числа могут содержать буквы.
Visual Basic
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
Sub m_1()
Dim LastRowPROVERKA As Long
Dim LastRowCENA_TOVARA As Long
Dim oFindYellow As Excel.Range
Dim oFindGRUPPA_PROVERKA As Excel.Range
Dim oFindGRUPPA_CENA_TOVARA As Excel.Range
Dim Address As String
Application.FindFormat.Interior.Color = 65535
LastRowPROVERKA = Worksheets("PROVERKA").Cells.SpecialCells(xlCellTypeLastCell).Row
With Worksheets("PROVERKA").Range("A1:A" & LastRowPROVERKA)
    Set oFindYellow = .Find(What:="", SearchFormat:=True)
    If Not oFindYellow Is Nothing Then
        Address = oFindYellow.Address
        Do
            LastRowCENA_TOVARA = Worksheets("CENA_TOVARA").Cells.SpecialCells(xlCellTypeLastCell).Row
            Worksheets("PROVERKA").Range("A" & oFindYellow.Row & ":F" & oFindYellow.Row).Copy
            Set oFindGRUPPA_PROVERKA = Worksheets("PROVERKA").Range("E1:E" & oFindYellow.Row) _
                .Find(What:="GRUPPA", LookIn:=xlValues, LookAt:=xlPart, _
                SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
                MatchCase:=False, SearchFormat:=False)
            Set oFindGRUPPA_CENA_TOVARA = Worksheets("CENA_TOVARA").Range("E1:E" & LastRowCENA_TOVARA) _
                .Find(What:=oFindGRUPPA_PROVERKA.Value, LookIn:=xlValues, LookAt:=xlWhole, _
                SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
            oFindGRUPPA_CENA_TOVARA.Offset(1, 0).EntireRow.Insert
            Set oFindYellow = .Find(What:="", SearchFormat:=True, after:=oFindYellow)
        Loop While oFindYellow.Address <> Address And Not oFindYellow Is Nothing
    End If
End With
Application.CutCopyMode = False
Application.FindFormat.Clear
End Sub
2
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
24.01.2011, 01:01  [ТС] 8
РЕСПЕКТ! снимаю шляпу! Спасибо!

Когда соберу файл воедино, выложу на форуме. СУПЕР
Вложения
Тип файла: xls check_PRICE_BUSINE2009_excel2003.xls (56.0 Кб, 56 просмотров)
0
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
27.01.2011, 02:19  [ТС] 9
Таблица почти готова, но есть пару вопросов, с которыми мне одному не справится.

Вопросы отметил розовым фоном на вкладках "check_new_price" и "invoice"

BUSINE2009 без Вас не разобраться!

может у кого есть еще какие мысли?


Заранее благодарен!

Файл 415kb, Excel 2007
http://www.hot.ee/liivrandproj... RUS_1.xlsm
0
Заблокирован
27.01.2011, 11:29 10
LV112,
на будущее, когда выкладываете образец файлов, с которым работаете, то нужно, чтобы этот образец максимально соответствовал реальному файлу.
Про другие макросы, не знаю, но 4 макрос, который я написал, в вашем файле уже не будет работать, т.к. в нём осуществляется поиск слова "GRUPPA", которого в реальном файле нет.

Я не смогу помочь - для меня это сложная задача.

Вот так можно создать файл PDF.
Необходимо задать область печати:
Выделяете диапазон ячеек, который надо отправить на печать, - вкладка "Разметка страницы" - группа "Параметры страницы" - Область печати - Задать.

Далее, используя мой код, сделайте его под себя:
Visual Basic
1
2
3
4
5
6
Sub m_1()
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:="C:\" & "invoice_" & Worksheets("INVOICE").Range("D3") & "_" & Date & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub
1
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
28.01.2011, 05:58 11
LV112, имхо, для решения задачи выбран не подходящий инструмент. преходи с Excel на MS Access
0
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
28.01.2011, 10:18  [ТС] 12
Цитата Сообщение от ironegg Посмотреть сообщение
LV112, имхо, для решения задачи выбран не подходящий инструмент. преходи с Excel на MS Access
Access для меня "темная лошадка"
0
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
28.01.2011, 14:47  [ТС] 13
BUSINE2009,
1) пробую каким-то образом интегрировать макрос внесения новых строк (кнопка 4), в принципе макрос работает, если названия категорий сменить на слово "GRUPPA", но есть 1 проблема, при добавлении новых строк в таблицу, таблица "разъезжается" т.е. происходит вставка ячейки со сдвигом вниз, и пол таблицы съезжает вниз а пол остается на своем месте (фото приложил) ... а надо просто вставить целую строку и добавить туда данные... (с копированием формул с соседней строки)

а если такое решение: в те ячейки столбца А где нет кода - вставить слово "GRUPPA 1, 2, ...3", и подправить макрос, и все должно заработать (наверно надо сделать в 2 таблицах одновременно)

или при внесении нового товара, макрос предложит "куда внести новые данные" построчно, в какую категорию...

2) Скопировать отмеченные строки и вставить во вкладку Счет "INVOICE", по моему для специалиста не особо сложная задача, я понимаю - упарил уже.... но самому не справиться, помогите пожалуйста еще раз!

Надеюсь на помощь!

http://www.hot.ee/liivrandproj... 2_WEB.xlsm
Миниатюры
Как сравнить 2 таблицы с ценами, обозначить изменения и внести поправки.  
0
Заблокирован
28.01.2011, 18:05 14
По 1 вопросу:
  1. Принадлежность к той или иной группе будет определяться по серому заголовку, поэтому заголовки групп должны иметь строго определённый цвет заливки. Будет осуществляться поиск в столбце “E” листа “PROVERKA” первого серого цвет по направлению вверх. Из найденной серой ячейки будет взято название группы.
  2. Названия групп в двух листа “PROVERKA” и “CENA_TOVARA” должны быть полностью одинаковыми.
  3. Если на листе “CENA_TOVARA” не будет обнаружено группы, которая нашлась в “PROVERKA”, то эта серая строка будет помечена жёлтым при запуске 3 макроса и если название не будет добавлено на лист “CENA_TOVARA”, то оно (название группы) будет добавлено к какой-нибудь группе как товар.
Visual Basic
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
Sub m_1()
Dim LastRowPROVERKA As Long
Dim LastRowCENA_TOVARA As Long
Dim oFindYellow As Excel.Range
Dim oFindGRUPPA_PROVERKA As Excel.Range
Dim oFindGRUPPA_CENA_TOVARA As Excel.Range
Dim Address As String
LastRowPROVERKA = Worksheets("PROVERKA").Cells.SpecialCells(xlCellTypeLastCell).Row
With Worksheets("PROVERKA").Range("A1:A" & LastRowPROVERKA)
    Application.FindFormat.Interior.Color = 65535
    Set oFindYellow = .Find(What:="", SearchFormat:=True)
    If Not oFindYellow Is Nothing Then
        Address = oFindYellow.Address
        Do
            LastRowCENA_TOVARA = Worksheets("CENA_TOVARA").Cells.SpecialCells(xlCellTypeLastCell).Row
            With Application.FindFormat.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .ThemeColor = xlThemeColorDark1
                .TintAndShade = -0.249977111117893
                .PatternTintAndShade = 0
            End With
            Set oFindGRUPPA_PROVERKA = Worksheets("PROVERKA").Range("E1:E" & oFindYellow.Row) _
                .Find(What:="", SearchDirection:=xlPrevious, SearchFormat:=True)
            Set oFindGRUPPA_CENA_TOVARA = Worksheets("CENA_TOVARA").Range("E1:E" & LastRowCENA_TOVARA) _
                .Find(What:=oFindGRUPPA_PROVERKA.Value, LookIn:=xlValues, LookAt:=xlWhole, _
                SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
            oFindGRUPPA_CENA_TOVARA.Offset(1, 0).EntireRow.Insert
            Worksheets("PROVERKA").Range("A" & oFindYellow.Row & ":F" & oFindYellow.Row).Copy
            Worksheets("CENA_TOVARA").Paste _
                Destination:=Worksheets("CENA_TOVARA").Range("A" & oFindGRUPPA_CENA_TOVARA.Row + 1)
            Application.FindFormat.Clear
            Application.FindFormat.Interior.Color = 65535
            Set oFindYellow = .Find(What:="", SearchFormat:=True, after:=oFindYellow)
        Loop While oFindYellow.Address <> Address And Not oFindYellow Is Nothing
    End If
End With
Application.CutCopyMode = False
Application.FindFormat.Clear
End Sub
По второму вопросу:
  1. В счёт строки будут добавляться: галочка нашлась – строка добавилась, данные в счёт записались.
  2. В счёте первой строкой должна быть строка 14. Если это не так, то нужно код переделывать.
  3. В счёте должна быть пустая 15 строка, на основе её будут добавляться новые строки в счёт.
  4. Не используйте визуальное объединение ячеек (Лист SKLAD, столбцы C и D) и реальное (Лист INVOICE, столбцы B – F), т.к. не получается тогда сделать. В счёте обязательно разберитесь со столбцом B – он должен быть один. Код сможете сами переделать.
  5. Единицы я не нашёл на листе SKLAD, а в счёте они есть.
Visual Basic
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
Sub m_1()
Dim oFindГалочка As Excel.Range
Dim LastRowSKLAD As Long
Dim Address As String
Dim LastRowINVOICE As Long
LastRowINVOICE = 15
LastRowSKLAD = Worksheets("SKLAD").Cells.SpecialCells(xlCellTypeLastCell).Row
With Worksheets("SKLAD").Range("B1:B" & LastRowSKLAD)
    Set oFindГалочка = .Find(What:="a", LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    If Not oFindГалочка Is Nothing Then
        Address = oFindГалочка.Address
        Do
            Range("A" & LastRowINVOICE).EntireRow.Insert
            With Worksheets("INVOICE")
                .Range("A" & LastRowINVOICE) = oFindГалочка.Offset(0, -1)
                .Range("B" & LastRowINVOICE) = oFindГалочка.Offset(0, 3)
                .Range("G" & LastRowINVOICE) = oFindГалочка.Offset(0, 2)
                '.Range("H" & LastRowINVOICE) = oFindГалочка.Offset(0, -1)
                .Range("I" & LastRowINVOICE) = oFindГалочка.Offset(0, 5)
                .Range("J" & LastRowINVOICE) = oFindГалочка.Offset(0, 6)
            End With
            Set oFindГалочка = .FindNext(oFindГалочка)
            LastRowINVOICE = LastRowINVOICE + 1
        Loop While oFindГалочка.Address <> Address And Not oFindГалочка Is Nothing
    End If
End With
End Sub
1
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
28.01.2011, 22:29  [ТС] 15
Огромное спасибо!
Буду разбираться...
0
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
29.01.2011, 09:34 16
в 15 строке (имею в виду последний код), похоже, не хватает точки перед Range. таким образом, обращение идет к активному листу, что может вызвать труднодиагностируемую ошибку или незаметное искажение результата. по той же причине, советую задать ссылку на конкретную книгу.
в 4 строке - плохой стиль. использование имени свойства для имени переменной. хотя... это на любителя и, возможно, в данном случае оправдано
0
Заблокирован
29.01.2011, 10:19 17
Измененный последний код:
Visual Basic
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
Sub m_1()
Dim oFindГалочка As Excel.Range
Dim LastRowSKLAD As Long
Dim Address As String
Dim LastRowINVOICE As Long
Dim SKLAD As Excel.Worksheet
Dim INVOICE As Excel.Worksheet
Set SKLAD = Workbooks("2010_CENNIK_RUS_1_2_WEB.xlsm").Worksheets("SKLAD")
Set INVOICE = Workbooks("2010_CENNIK_RUS_1_2_WEB.xlsm").Worksheets("INVOICE")
LastRowINVOICE = 15
LastRowSKLAD = SKLAD.Cells.SpecialCells(xlCellTypeLastCell).Row
With SKLAD.Range("B1:B" & LastRowSKLAD)
    Set oFindГалочка = .Find(What:="a", LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    If Not oFindГалочка Is Nothing Then
        Address = oFindГалочка.Address
        Do
            With INVOICE
                .Range("A" & LastRowINVOICE).EntireRow.Insert
                .Range("A" & LastRowINVOICE) = oFindГалочка.Offset(0, -1)
                .Range("B" & LastRowINVOICE) = oFindГалочка.Offset(0, 3)
                .Range("G" & LastRowINVOICE) = oFindГалочка.Offset(0, 2)
                '.Range("H" & LastRowINVOICE) = oFindГалочка.Offset(0, -1)
                .Range("I" & LastRowINVOICE) = oFindГалочка.Offset(0, 5)
                .Range("J" & LastRowINVOICE) = oFindГалочка.Offset(0, 6)
            End With
            Set oFindГалочка = .FindNext(oFindГалочка)
            LastRowINVOICE = LastRowINVOICE + 1
        Loop While oFindГалочка.Address <> Address And Not oFindГалочка Is Nothing
    End If
End With
End Sub
Добавлено через 13 минут
LV112,
для всех остальных кодов также укажите имена книг перед листами.
1
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
29.01.2011, 14:19  [ТС] 18
Спасибо за поддержку,

Кстати без "." перед RANGE лучше работает, посмотрите с ней и без как добавляет товары в СЧЕТ!

так-что как кисть мастера легла, так пускай и будет! ))) наверное!

При добавлении нового товара, все добавляет на вкладку "SKLAD", все ок, но почему-то затрагивает одну строку, которую макрос трогать не должен (у меня получается 108 строка)

По поводу внести название книги и листа - тут двоякое мнение, а если кто то изменит название файла, и листа, то возникнут проблемы....!

выкладываю более свежий файл: еще не конечная версия.... но скоро будет рабочий шаблон

http://www.hot.ee/liivrandproj... WEB_4.xlsm
0
Заблокирован
29.01.2011, 14:26 19
Цитата Сообщение от LV112 Посмотреть сообщение
так-что как кисть мастера легла, так пускай и будет! ))) наверное!
нужно последний код использовать.

Добавлено через 3 минуты
Цитата Сообщение от LV112 Посмотреть сообщение
По поводу внести название книги и листа - тут двоякое мнение, а если кто то изменит название файла, и листа, то возникнут проблемы....!
тогда во время выполнения макроса должна быть открыта одна книга. Вы можете гарантировать, что всегда во время выполнения макроса будет открыта одна книга? Конечно же нет. Поэтому имена файлов нужно обязательно назначать или сделать защиту (не знаю, можно такое сделать или нет), чтобы нельзя было открыть более 1 книги одновременно.

Добавлено через 2 минуты
Имя книги можно указывать в одном месте кода, а в остальной части кода использовать переменную вместо названия файла. Если файл будет другой, то название менять нужно будет только в одном месте.
1
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
29.01.2011, 15:54 20
Цитата Сообщение от LV112 Посмотреть сообщение
а если кто то изменит название файла, и листа
тогда надо программно же получить имя книги, например, запомнить ссылку на объект книги в глобальной переменной при открытии книги или, хотябы, запуске макроса. подумай, что будет, если во время выполнения макроса станет активной другая книга (возможно даже, у этой другой книги будет такое же имя! и похожее содержание). хуже всего незаметное искажение результата или частичное завершение транзакции
1
29.01.2011, 15:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2011, 15:54
Помогаю со студенческими работами здесь

Как внести изменения в ListBox
При изменении данных в программе, требуется, чтобы также изменялись записи в ListBox`e. Подскажите,...

Как внести изменения в код
Есть код программы, не мой был тут взял, но разобрался более менее что к чему, но нужно одно...

Как в готовый apk внести изменения?
Сразу скажу что я не программист. Встала такая задача- поставить сыну Вк приложение чтоб он не мог...

Как внести изменения в скомпилированное приложение?
Есть скомпелированная программа содержащая всего одну строчку: procedure...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru