Страницы: 1
RSS
Макрос записывает значение в неправильную ячейку, Мистика с номером 70120222
 
Столкнулся с крайне странной ситуацией. Есть файл с двумя страницами.

На странице "1" есть поиск по определенным позициями с страницы "2" из колонки B
Всего 15 строк с отображением результатов. Ключевое значение - номер артикула товара, цифровой код из 8 цифр.
Возле каждой строки две кнопки - "+" и "-".

Если в строке на странице "1" появляется номер артикула, к примеру "70010101",  и нажимается кнопка "+", макрос ищет на странице "2" в  колонке B данный артикул и добавляет в ячейке С на строке с данным кодом  единицу (увеличивает значение на 1). При нажатии кнопки "-" соотвественно количество уменьшается на 1 того же артикула.

Вот код двух макросов
Код
Sub Erste_Plus()
Dim wshData As Worksheet, wshSearch As Worksheet
Dim rngArtikel As Range, rngToFind As Range

    Set wshSearch = ThisWorkbook.Worksheets("1")
    Set rngToFind = wshSearch.Cells(11, 3)
    
    Set wshData = ThisWorkbook.Worksheets("2")
    Set rngArtikel = wshData.Cells.Find(rngToFind)

If Not IsEmpty(rngArtikel) Then
wshData.Cells(rngArtikel.Row, 3) = wshData.Cells(rngArtikel.Row, 3).Value + 1
End If

End Sub


Sub Erste_Minus()
Dim wshData As Worksheet, wshSearch As Worksheet
Dim rngArtikel As Range, rngToFind As Range

    Set wshSearch = ThisWorkbook.Worksheets("1")
    Set rngToFind = wshSearch.Cells(11, 3)
    
    Set wshData = ThisWorkbook.Worksheets("2")
    Set rngArtikel = wshData.Cells.Find(rngToFind)

If Not IsEmpty(rngArtikel) Then
wshData.Cells(rngArtikel.Row, 3) = wshData.Cells(rngArtikel.Row, 3).Value - 1
End If
End Sub


Но вдруг вылезла очень странная ситуация, которая встречается только с одним номером - 70120222. Когда нажимается кнопка напротив этого артикула на странице "1", значение почему-то увеличивается для совершенно другого артикула - 70100201.
Для всех остальных артикулов все работает как надо.

Причем, если поменять первый артикул на другой номер, к примеру - 70120229 (девятка в конце вместо двойки), но макрос работает нормально, добавляет количество именно возле артикула 70120229, а если поменять второй артикул - 70100201 на 70100209, а первый оставить 70120222, то при нажатии кнопки макроса все равно добавляет значение в эту строку, т.е. теперь в строку с значением 70120209.

Если это важно, номера строк
70120222 -  225
70100201 -  181

Просто мистика какая-та.
Goedenavond!
 
seggi, не вникал особо, но, если есть методы Find или Replace, то первым делом надо проверить, что задаются ВСЕ параметры
Дело в том, что незаданные параметры берутся такие, какие были заданы в последний раз
Попробуйте сначала так, а там посмотрим
UPD: Изменил код
Изменено: Jack Famous - 25.06.2021 09:23:00
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
файл показываем
 
seggi, А Вы поищите вручную на листе "2" сколько раз встречается номер - 70120222, возможно есть ячейка с номером 701202221 и этот номер может находиться не только столбце с номерами, даже скорее всего он находится не в этом столбце, но скорее всего в строке в которой он меняет значение
Изменено: msi2102 - 25.06.2021 09:24:05
 
Цитата
msi2102 написал:
seggi , А Вы поищите вручную на листе "2" сколько раз встречается номер - 70120222
Блин, точно, есть в описании формулы именно в строке с артикулем 70100201. Да, баг найден. Хотя я думал, что поиск идет только по второму столбцу в файле "2", а получается ищет вообще везде.
Надо макрос переделывать как-то

Спасибо, как всегда мистика оказалась просто багом.  :(  Спасибо  
Изменено: seggi - 25.06.2021 09:24:24
Goedenavond!
 
Цитата
seggi: я думал, что поиск идет только по второму столбцу в файле "2",
Set clFind = .Cells.Find(clFind, , , xlWhole, , , True, , False) — похоже на второй столбец???
Set clFind = .Columns(2).Find(clFind, , , xlWhole, , , True, , False) — а так???
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, да, поменял
Код
Set rngArtikel = wshData.Cells.Find(rngToFind)
на
Код
Set rngArtikel = wshData.Columns(2).Find(rngToFind)

все работает как надо. Спасибо большое!  
Goedenavond!
 
seggi, пожалуйста  ;)
Лучше всё-таки все параметры все указать
Изменено: Jack Famous - 25.06.2021 09:43:10
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
seggi написал: значение в неправильную ячейку,
С каких это пор ячейки делятся на правильные и неправильные? )
 
Цитата
vikttur написал:
делятся на правильные и неправильные
Это неправильные пчелы и делают они неправильный мёд
 
Цитата
vikttur написал:
С каких это пор ячейки делятся на правильные и неправильные? )
С тех пор, как молотки делятся на правильные (которые не бьют по пальцам) и неправильные (которые по пальцам регулярно попадают).  :D  
Goedenavond!
Страницы: 1
Наверх