0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26

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

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

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

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

Использую Excel 2007

За помощь заранее благодарен!
Вложения
Тип файла: xls check_PRICE_2003.xls (32.5 Кб, 92 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2011, 19:49
Ответы с готовыми решениями:

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

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

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

38
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
22.01.2011, 22:58
Для первой кнопки:
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  [ТС]
Огромнейшее спасибо Вам! Busine2009

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

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

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

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

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

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

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

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

Ответ:

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

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

Любой вариант подойдет!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.01.2011, 23:02
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  [ТС]
РЕСПЕКТ! снимаю шляпу! Спасибо!

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

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

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

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


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

Файл 415kb, Excel 2007
http://www.hot.ee/liivrandproj... RUS_1.xlsm
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
27.01.2011, 11:29
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
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
28.01.2011, 05:58
LV112, имхо, для решения задачи выбран не подходящий инструмент. преходи с Excel на MS Access
0
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
28.01.2011, 10:18  [ТС]
Цитата Сообщение от ironegg Посмотреть сообщение
LV112, имхо, для решения задачи выбран не подходящий инструмент. преходи с Excel на MS Access
Access для меня "темная лошадка"
0
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 26
28.01.2011, 14:47  [ТС]
BUSINE2009,
1) пробую каким-то образом интегрировать макрос внесения новых строк (кнопка 4), в принципе макрос работает, если названия категорий сменить на слово "GRUPPA", но есть 1 проблема, при добавлении новых строк в таблицу, таблица "разъезжается" т.е. происходит вставка ячейки со сдвигом вниз, и пол таблицы съезжает вниз а пол остается на своем месте (фото приложил) ... а надо просто вставить целую строку и добавить туда данные... (с копированием формул с соседней строки)

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

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

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

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

http://www.hot.ee/liivrandproj... 2_WEB.xlsm
Миниатюры
Как сравнить 2 таблицы с ценами, обозначить изменения и внести поправки.  
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
28.01.2011, 18:05
По 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  [ТС]
Огромное спасибо!
Буду разбираться...
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
29.01.2011, 09:34
в 15 строке (имею в виду последний код), похоже, не хватает точки перед Range. таким образом, обращение идет к активному листу, что может вызвать труднодиагностируемую ошибку или незаметное искажение результата. по той же причине, советую задать ссылку на конкретную книгу.
в 4 строке - плохой стиль. использование имени свойства для имени переменной. хотя... это на любителя и, возможно, в данном случае оправдано
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
29.01.2011, 10:19
Измененный последний код:
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  [ТС]
Спасибо за поддержку,

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

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

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

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

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

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

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

Добавлено через 2 минуты
Имя книги можно указывать в одном месте кода, а в остальной части кода использовать переменную вместо названия файла. Если файл будет другой, то название менять нужно будет только в одном месте.
1
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
29.01.2011, 15:54
Цитата Сообщение от LV112 Посмотреть сообщение
а если кто то изменит название файла, и листа
тогда надо программно же получить имя книги, например, запомнить ссылку на объект книги в глобальной переменной при открытии книги или, хотябы, запуске макроса. подумай, что будет, если во время выполнения макроса станет активной другая книга (возможно даже, у этой другой книги будет такое же имя! и похожее содержание). хуже всего незаметное искажение результата или частичное завершение транзакции
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2011, 15:54
Помогаю со студенческими работами здесь

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

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

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

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

Как внести изменения в скомпилированное приложение?
Есть скомпелированная программа содержащая всего одну строчку: procedure TForm1.Button1Click(Sender: TObject); var i: integer; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru